Я новичок в языке C и сейчас пытаюсь подсчитать количество вводимых символов.
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
Это то, что я написал так же, как и мой учебник, но функция printf, похоже, не работает.
Кроме того, похоже, что эта программа не завершается, потому что подсказка не появляется.
Я понятия не имею, достаточно ли старое содержание этой книги.
Не могли бы вы сказать мне, что не так с этим кодом?
Это похоже на код от K&R. И был кто-то еще, кто столкнулся с той же проблемой неверной интерпретации %ld как %1d. Учитывая, что nc относится к типу long, вам понадобится %ld (буква ell). В книге есть буква, а не буква. Использование main() показывает, что книга датирована (2-е изд. 1988 г.). C99 требует возвращаемого типа и предпочитает void в списке аргументов: int main(void). — person agongji schedule 15.02.2020
Здравствуйте, близкие избиратели, рекомендую НЕ считать этот вопрос опечаткой. Джон гениально объяснил совершенно иную проблему с точки зрения ОП. — person agongji schedule 15.02.2020
Предыдущий вопрос был Нет вывода для кодов, написанных на языке программирования C Брайаном В. Керниганом и Деннисом М. Ричи, но сейчас он закрыт. Там было несколько лишних опечаток. — person agongji schedule 15.02.2020
Если вы включите предупреждения (что вы всегда должны делать), компилятор укажет вам на проблему, например предупреждение: формат «% d» ожидает аргумент типа «int», но аргумент 2 имеет тип «long int». В GCC вы можете использовать флаг -Wall. — person agongji schedule 15.02.2020
