PDA

Visualizza la versione completa : [C] problema conta linee da file


annam90
14-02-2010, 17:17
salve a tutti; ho un esercizio che mi chiede di scrivere un testo su file, poi visualizzarlo carattere per carattere, e poi contare le linee del file che cominciano per "a".
Ho fatto tutto, ma trovo difficoltà in quest'ultimo punto. Come posso farlo? vi posto quello che ho provato a fare:
(la parte in rosso è quella che non mi esce, che sarà sicuramente sbagliata)



#include <stdio.h>

int main ()
{ FILE *fp ;
char st[50];
char c;
int i;


printf("Inserire testo: ");
scanf("%s", &st);

if ((fp=fopen("gna.txt", "w"))==NULL) {printf("errore nell'apertura");}
else {
fprintf(fp, "%s", st);
fclose(fp);}

if ((fp=fopen("gnam.txt", "r"))==NULL) {printf("errore nell'apertura");}
else {
c=fgetc(fp);
while (!feof(fp)) {
printf ("%c", c);
c=fgetc(fp);
}
fclose(fp);}


if ((fp=fopen("gnam.txt", "r"))==NULL) {printf("errore nell'apertura");}
else { i=0;
c=fgetc(fp);
while (!feof(fp) && (c!= '\n')) {
if (c='a') i++;
printf("%d", i);}
fclose(fp);}






system ("PAUSE");
return 0;
}

oregon
14-02-2010, 17:38
Il confronto con la if si fa con

==

e non con =

annam90
14-02-2010, 17:45
giusto..ma in ogni caso non funziona..

oregon
14-02-2010, 19:05
Certo ... se controlli, nel ciclo non leggi mai dal file ...

MrX87
15-02-2010, 10:30
if ((fp=fopen("gnam.txt", "r"))==NULL) {printf("errore nell'apertura");}
else { i=0;
c=fgetc(fp);
while (!feof(fp) && (c!= '\n')) {
if (c='a') i++;
printf("%d", i);}
fclose(fp);}

innanzi tutto direi proprio che nel cilco non rileggi mai c quindi, ti crea problemi di sicuro perchè testi sempre la stessa variabile!! infine come dice oregon l'if va testato con ==...poi infine ho provato a fare una soluzione un pò rudimentale...prova se va bene...la posto qua sotto!



if ((fp=fopen("gnam.txt", "r"))==NULL) {printf("errore nell'apertura");}
else { i=0;
c=fgetc(fp);
while ( !feof(fp) ) {
if ( f == 1 && c == 'a' ) i++;
f=0;
if ( c == '\n' ) f = 1;
c=fgetc(fp);
}
fclose(fp);
printf("\n%d\n", i);
}

Loading