Я этот текстовый файл под названием «input.txt», который содержит:Чтение из перенаправлены стандартного ввода (WordCount) - C
test line one
test line two
final line
После компиляции и запуска с помощью
$ ./a.exe < input.txt
Я получаю выход :
33 8 0
Я запутался, почему количество строк не работает, как при печати из целочисленных значений, 13 и 10 (в отставке перевозки urn/line feed). Также charcount - два по фактическому счету. Есть идеи?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int charcount = 0, wordcount = 0, linecount = 0;
int c = getchar();
while (c != EOF){
if (c == 13){
linecount++;
c = getchar();
} else if (c >= 65 && c <= 90 || c >= 97 && c <= 122 || c == 39 && c != 13) {
while (c >= 65 && c <= 90 || c >= 97 && c <= 122 || c == 39 && c != 13){
charcount++;
c = getchar();
}
wordcount++;
} else {
charcount++;
}
c = getchar();
}
printf("%lu %lu %lu\n", charcount, wordcount, linecount);
return (0);
}
Не забывайте, что символы новой строки также являются символами. Стандартная программа 'wc', безусловно, учитывает их; ваш код, вероятно, тоже. В Unix ваш файл имеет две строки с 13 символами и один с 10, плюс 3 строки новой строки, в общей сложности 39 символов; в Windows текстовый файл также будет содержать 39 символов, хотя на диске или в файле будет 42 символа, если он рассматривается как двоичный файл. –