Откуда берется лишний символ в конце строки? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Эта программа должна считать среднее количество строк , но считает неправильно.
#include <stdio.h>
#include <string.h>
int main ()
{
    FILE *f , *fo;
    f = fopen("C:\\input.txt","r");
    fo = fopen("C:\\output.txt","w");
    float slov , buk  , pred;//slov - счетчик слов  , buk - счетчик букв  , pred - счетчик предложений
    double z ;
char ch;
while (!feof(f))
{
char ch = fgetc(f);
if (ch == '.' )
{
    pred++;
}
if(ch != ' ')
{
    if ( ch != '.' )
    {
        buk++;
    }
}
if ( ch == ' ' )
    {
        slov++;
    }
}
z = (buk-1)/(slov+1) ;
fprintf( fo , "%lf" , z );
fclose(f) ;
fclose(fo) ;
return 0;
}
В конце строки символ которого нету во входном файле и он его считывает как еще одну букву. Что это и как это исправить ? http://savepic.org/2715126m.jpg

Решение задачи: «Откуда берется лишний символ в конце строки?»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main(void)
{   
   
   char* fname="data.txt";
   char t[1024],*y;
   float sum=0,sl=0,str=0;
   
   FILE *r;
   r = fopen(fname, "r");
   
   printf("\nDannye iz faila:\n\n");
   
   while(fgets(t,1024,r)) {
      str++;
      printf("%s",t);
      y=strtok(t, " ");
      while(y != NULL) {
         sum=sum+strlen(y);
         sl++;
         y=strtok (NULL, " ");
      }
   }
   
   printf("\n\nSrednnee kol. bukv vo vsex slovax = %f", (sum-str+1)/sl);
   
   fclose(r);
 
}

Оцени полезность:

5   голосов , оценка 4.8 из 5
Похожие ответы