Откуда берется лишний символ в конце строки? - C (СИ)
Формулировка задачи:
Эта программа должна считать среднее количество строк , но считает неправильно.
В конце строки символ которого нету во входном файле и он его считывает как еще одну букву. Что это и как это исправить ?
http://savepic.org/2715126m.jpg
#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; }
Решение задачи: «Откуда берется лишний символ в конце строки?»
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); }