Quello è un inutile controllo copiato da un altro codice di programma. comunque vedi questo codice che ho modificato:
sembra che si trovi, ma i problemi sono 2:
1) mi conta 50 caratteri e in realtà sono 48,il problema e che conta anche il carattere di terminazione credo;
2) mi dice che la riga più lunga è "tra l'erbetta" ma non è così perchè la riga più lunga è "La Vispa Teresa"
Che devo modificare?
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<stdbool.h>
#define N 200
int main(int argc,char *argv[])
{
FILE *inptr;
char ch;
if(argc>2)
{
fprintf(stderr,"uso: <nome_programma> <nomefile.txt>\n");
exit(EXIT_FAILURE);
}
if((inptr=fopen(argv[1],"r"))==NULL)
{
fprintf(stderr,"Impossibile aprire %s in lettura!\n",argv[1]);
exit(EXIT_FAILURE);
}
int count=0,rig=0,carriga,carmax=-1,i;
char a[200],lunga[200];
float med;
while(fgets(a,200,inptr)!=NULL)
{
carriga=0;
for(i=0;a[i]!='\n';i++)
{
if(a[i]!=' ')
carriga++;
}
rig++;
count+=carriga;
if(carriga>carmax)
{
carmax=carriga;
strcpy(lunga,a);
}
}
med=count/rig;
printf("Caratteri riga più lunga: %d\n\n",carmax) ;
printf("Riga più lunga:\n") ;
printf("\t%s\n", lunga );
printf("Caratteri totali=%d\n\nNumero righe=%d\n\n",count,rig);
printf("Media di caratteti per riga: %.1f\n\n",med);
fclose(inptr);
return(0);
}