Я пишу небольшую программу C для подсчета количества слов, введенных через стандартный ввод, и подсчитываю количество введенных слов, а также среднее число слов в строке. Следующий код отлично работает для файлов, но при вводе ввода в командную строку я могу (по-видимому) сигнализировать только EOF (Ctrl-Z, так как я нахожусь в Windows) на новой строке, которая сбрасывает количество строк. Есть ли способ исправить это? Вот некоторые примеры:Любой способ сигнализировать конец файла без создания новой строки в командной строке/bash?
Программа:
#include<stdio.h>
main()
{
int lines = 0, totalCount = 0;
float average = 0.0;
char newline= ' ';
// scanf and throw away the string values
while (scanf("%*s%c", &newline) != EOF)
{
// at least one line exists
if (totalCount == 0)
{
lines++;
}
// update count
totalCount++;
// account for any subsequent lines
if (newline == '\n')
{
lines++;
}
}
average = (float) totalCount/lines;
printf("%d ", totalCount);
printf("%.2f\n", average);
}
Это прекрасно работает (файл имеет 313 слов и 35 строк):
< A.exe testfile.txt
313 8,94
Это, однако, не является:
a.exe
Это испытание
, чтобы увидеть, если это
работы
ладно
^Z
10 2,00
Конец файла добавляет одну строку, чтобы сделать всего 5 строк, в результате чего средние слова на строку выходят на 2.00. Есть ли способ исправить это или это так, как должно быть?