URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5126
[ Назад ]

Исходное сообщение
"Подсчет и выход EOF"

Отправлено Len , 07-Фев-06 22:25 
Здравствуйте.
Программа должна подсчитывать количество строк файла.
Как задать программе подсчитывать строки определенного файла
и выходить из цикла подсчета по окончании файла?

#./a.out file
Нет результата.

Пример из Карнигана и Ричи, но без результата:

#define EOF 0
main()
{
int c,nl;
while((c=getchar())!=EOF)
if (c=='\n')
        ++nl;
printf("%d\n", nl);
}

#uname -a
FreeBSD 5.4

Также непонятно, почему EOF  не срабатывает.
Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"Подсчет и выход EOF"
Отправлено gyn61 , 08-Фев-06 00:40 
./a.out < file

EOF не срабатывает по той же причине.

PS. Не досмотрел

#define EOF (-1)

А лучьше вместо этого в начале программы:

#include <stdio.h>

да и nl неплохо было бы обнулить вначале.


"Подсчет и выход EOF"
Отправлено chip , 08-Фев-06 00:49 
>Здравствуйте.
>Программа должна подсчитывать количество строк файла.
>Как задать программе подсчитывать строки определенного файла
>и выходить из цикла подсчета по окончании файла?
>
>#./a.out file
>Нет результата.
>
>Пример из Карнигана и Ричи, но без результата:
>
>#define EOF 0
>main()
>{
>int c,nl;
>while((c=getchar())!=EOF)
>if (c=='\n')
>        ++nl;
>printf("%d\n", nl);
>}
>
>#uname -a
>FreeBSD 5.4
>
>Также непонятно, почему EOF  не срабатывает.
>Заранее благодарен.

#include <stdio.h>

main()
{
  int c, nl = 0;
  while ((c=getchar()) != EOF) {
    if (c == '\n')
      ++nl;
  }
  printf("%d\n", nl);
}

Как минимум инициализировать nl.
1. gcc <filename>.c
2. cat </path/to/filename> | ./a.out