Я написал эту программу, чтобы принимать файл и сканировать количество строк, абзацев и слов в файле.
Проблема в том, что сканирование не прекращается никогда. Он никогда не выходит из цикла while (nextChar! = '\ N'). Таким образом, функции processBlank и copyText никогда не перестают работать. Он никогда не попадает в EOF.
Я не знаю, что делать дальше. Я не могу найти решение, поэтому любая помощь приветствуется :)
#include <stdio.h>
#include <stdlib.h>
void initialize(int *p1,int *p2,int *p3,int *p4)
{
*p1=0;
*p2=0;
*p3=0;
*p4=0;
}
void processBlank(char *nextChar,int *wordsinLine,FILE *ctPtr)
{
while (*nextChar==' ')
{
printf("%c",*nextChar);
*nextChar=fgetc(ctPtr);
}
*wordsinLine+=1;
}
void copyText(char *nextChar,FILE *ctPtr)
{
while (*nextChar!=' ')
{
printf("%c",*nextChar);
*nextChar=fgetc(ctPtr);
}
}
void updateCount(int *numWords,int *wordsinLine,int *numParagraphs,int *numLines)
{
*numWords+=*wordsinLine;
if (*wordsinLine==0)
*numParagraphs+=1;
*wordsinLine=0;
*numLines+=1;
}
void printTotal(int numWords,int numLines,int numParagraphs)
{
printf("\n\n\n\nTotal number of words is: %d\n\n",numWords);
printf("Total number of lines is: %d\n\n",numLines);
printf("Total number of paragraphs is: %d\n\n\n\n",numParagraphs);
}
void main()
{
int numWords,numLines,numParagraphs,wordsinLine;
initialize(&numWords,&numLines,&numParagraphs,&wordsinLine);
FILE *ctPtr;
char nextChar;
if ((ctPtr=fopen("Q2read.txt", "r"))==NULL)
printf("File could not be opened\n");
else
{
nextChar=fgetc(ctPtr);
while (nextChar!=feof(ctPtr))
{
while (nextChar!='\n')
{
processBlank(&nextChar,&wordsinLine,ctPtr);
copyText(&nextChar,ctPtr);
}
updateCount(&numWords,&wordsinLine,&numParagraphs,&numLines);
}
printTotal(numWords,numLines,numParagraphs);
fclose(ctPtr);
}
}