2010-01-23 3 views
3

Я изучаю C с Язык программирования C (K & R).Обучение C (через K & R) с помощью xcode

Поскольку я особо не хочу, чтобы между текстовым редактором и запущенным gcc я не хотел вникать, я решил использовать xcode в качестве среды IDE. До сих пор я мог следить за примерами книги без проблем до раздела 1.5.2.

Когда дана действительная программа (?) ...

#include <stdio.h> 

void main() 
{ 
    long nc; 

    nc = 0; 
    while (getchar() != EOF) 
     ++nc; 
    printf("%ld\n", nc); 
} 

... Я не получаю никакого окончательного вывода говорит мне, сколько символов были в моем входе. Я ввожу свой ввод через окно консоли xcode.

После некоторой отладки, похоже, что моя программа застревает в цикле while и никогда не встречает токен EOF. Чтобы учесть это, вместо этого я заменил новую строку как новое условие, заменив EOF на "\n", который также ничего не делает и дает мне int для предупреждения сравнения указателя.

Что я здесь делаю неправильно?

Могу ли я следовать K & R используя xcode?

+0

Используйте '\ n', и он может работать лучше;) \ является символом escape. – Skurmedel

+0

Оооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооеееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее Спасибо, что поймали это. – deeb

ответ

11

Тип ^D (control-d) для отправки EOF.

Если вы хотите переломить новую строку, вам необходимо сравнить возвращаемое значение getchar с номером '\n', а не "\n". Первый - значение char новой строки; последний является указателем на символ с этим значением. Если это еще не имеет для вас смысла, не беспокойтесь, это будет, когда вы прочтете больше.

+0

Я тестировал это, и он отлично работает. –

+0

Да! Благодаря тонну! – deeb

 Смежные вопросы

  • Нет связанных вопросов^_^