Сергей Ермаков
Сергей Ермаков

задачки из К&R Язык программирования С



уже спрашивал, но сейчас вродь народу побольше
1.5.2 Подсчет символов
#include

/* подсчет вводимых символов; 1-я версия */
main()
{
long nc;
nc = 0;

while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
1.5.3 Подсчет строк
#include
/* подсчет строк входного потока */
main()
{
int c, nl;
nl = 0;
while ((с = getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
1.5.4 Подсчет слов
#include

#define IN 1/* внутри слова */
#define OUT 0/* вне слова */

/* подсчет строк, слов и символов */
main()
{
int с, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((с = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
компилирую эти примеры из книги Керригана и не могу вывести результат - в cmd ENTER как символ.

АБ
Александр Бовт

ЕМНИП

if (c == '\n') расчитано на юниксы, основываясь на которых и писалось K&R

в винде
в файлах для конца строки используется пара символов "\n\r"
а энтер вроде посылает '\r'

А вообще в разных ОС то '\n' то '\r' то "\n\r"
соответственно это сравнение надо менять под конкретную ОС или переписывать так чтоб разгребались все варианты.

Анастасия
Анастасия

В конце ввода нажми клавишу F6 (возможно, два раза) и Enter. Керниган рассчитывал на людей, знакомых с DOS.

Похожие вопросы
Язык программирования
Задачка по программированию. Помогите...
Языки программирования
задачка по программированию)
Задачка по программированию на Си
Какой язык программирования лучше
программирование бесик задачка
язык программирования Prolog, помогите с задачкой
помогите с задачкой по программированию!
Язык программирования С