Итак, я сейчас пишу программу для подсчета строк в блоке текста. Независимо от того, он всегда возвращает ноль. Вот фрагмент кода:
int main(int argc, const char *argv[]){
int nextChar = getchar();
int lines = 0;
while(nextChar != EOF){
if(nextChar == '\n'){
lines++;
}
nextChar = getchar();
}
printf("%i", lines);
}
Текстовый файл, который я читаю:
Операционная система - это слой сложного программного обеспечения, которое управляет аппаратными ресурсами и предоставляет общий интерфейс для пользователя программы. Популярные настольные операционные системы: Windows macOS LinuxЛюбая помощь приветствуется!
Попробуйте использовать
if (nextChar == '\n' || nextChar == '\0')
Пожалуйста, дайте мне знать, если это помогло.
Файл: Operating.txt
An operating system is a layer of sophisticated software that manages hardware resources and provides a common interface for user programs. Popular desktop operating systems include:
Windows
macOS
Linux
Файл: LineCount.c
#include<stdio.h>
int main(int argc, const char *argv[]){
int nextChar = getchar();
int lines = 0;
while(nextChar != EOF){
if(nextChar == '\n'){
lines++;
}
nextChar = getchar();
}
printf("%i", lines);
}
Команды:
gcc LineCount.c ./a. & lt; Operating.txtВыход:
gcc LineCount.c
5
Попробуйте следующее:
FILE *fp = fopen("test.txt", "r");
int ch = getc(fp);
int line = 0;
while (ch != EOF) {
if (ch == '\n' || ch == '\0') {
line++;
}
ch = getc(fp);
}
printf("%i", lines);
. Разница заключается только в добавлении указателя на файл, который я не нашел в вашем коде, и заменил функцию на чтение с помощью getc();
Если вы читаете текст из текстового файла, я бы рекомендовал сделать это
char *readFile(char *fileName)
{
FILE *file = fopen(fileName, "r");
int c;
int LineCount=0;
if (file == NULL)
return NULL; //could not open file
while ((c = fgetc(file)) != EOF)
{
if((char)c == '\n')
lineCount++;
}
print("Number of lines in the file are %d", lineCount);
}