zvengenz (Normal User)
Newbie
Messaggi: 5
Iscritto: 20/01/2014
|
Il codice che ho scritto è questo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> #include <string.h> main() { char *immagine[1000]; FILE *stream; char scelta[1000]; char frutto1[1000]="albicocca"; char frutto2[1000]="banana"; printf("Vuoi un'albicocca o una banana? "); scanf("%s",&scelta); if(strcmp(scelta,frutto1)==0) { stream=fopen("albicocca.txt","r"); fgets(immagine,1000,stream); printf("%s",immagine); fflush(stdin); fclose(stream); } else if(strcmp(scelta,frutto2)==0) { stream=fopen("banana.txt","r"); fgets(immagine,1000,stream); printf("%s",immagine); fflush(stdin); fclose(stream); } system("PAUSE"); return 0; }
|
Ma quando vado ad eseguirlo e a scrivere "albicocca" o "banana" non mi esce nulla, a volte due caratteri a caso (nei file di testo ci sono delle immagini in caratteri di un'albicocca e una banana) e il programma finisce. Uso Dev-C++, può essere per colpa di quello? Mi ricordo che con Visual Studio mi usciva ma non ne sono sicuro. Grazie in anticipo
Ultima modifica effettuata da zvengenz il 20/01/2014 alle 14:15 |
|
dmr (Normal User)
Pro
Messaggi: 141
Iscritto: 04/01/2012
|
char immagine[1000]; ,non char *immagine[1000];
Comunque se vuoi stampare tutto il file, facendo solo fgets(immagine,1000,stream) non va bene , cosi stampi solo una riga.
Ultima modifica effettuata da dmr il 20/01/2014 alle 14:46 |
|
zvengenz (Normal User)
Newbie
Messaggi: 5
Iscritto: 20/01/2014
|
Ah grazie ecco, e come faccio a stamparlo tutto?
|
|
dmr (Normal User)
Pro
Messaggi: 141
Iscritto: 04/01/2012
|
Per non andare a complicarti la vita, puoi fare semplicemente:
Codice sorgente - presumibilmente Plain Text |
while(fgets(immagine,1000,stream)!=NULL)
printf("%s",immagine);
|
Fai questo nei 2 if. La fgets restituisce il valore NULL quando ha finito di leggere il file.
Ah già che ci stò:
Codice sorgente - presumibilmente Plain Text |
La & non si mette perchè l'array scelta viene "interpretato" come se fosse un puntatore a 1000 caratteri. Ultima modifica effettuata da dmr il 20/01/2014 alle 20:29 |
|
zvengenz (Normal User)
Newbie
Messaggi: 5
Iscritto: 20/01/2014
|
Ho provato ma continua a leggere solo una riga. Soluzioni?
|
|
dmr (Normal User)
Pro
Messaggi: 141
Iscritto: 04/01/2012
|
Strano, puoi postare il sorgente modificato?
|
|
zvengenz (Normal User)
Newbie
Messaggi: 5
Iscritto: 20/01/2014
|
Eccolo
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> #include <string.h> main() { char immagine[1000]; FILE *stream; char scelta[1000]; char frutto1[1000]="albicocca"; char frutto2[1000]="banana"; printf("Vuoi un'albicocca o una banana? "); scanf("%s",scelta); if(strcmp(scelta,frutto1)==0) { stream=fopen("albicocca.txt","r"); while(fgets(immagine,1000,stream)!=NULL) { printf("%s",immagine); fflush(stdin); fclose(stream); } } else if(strcmp(scelta,frutto2)==0) { stream=fopen("banana.txt","r"); while(fgets(immagine,1000,stream)!=NULL) { printf("%s",immagine); fflush(stdin); fclose(stream); } } system("PAUSE"); return 0; }
|
|
|
dmr (Normal User)
Pro
Messaggi: 141
Iscritto: 04/01/2012
|
fclose(stream); va fuori dal while.
|
|
zvengenz (Normal User)
Newbie
Messaggi: 5
Iscritto: 20/01/2014
|
Funziona, grazie
Ultima modifica effettuata da zvengenz il 23/01/2014 alle 14:48 |
|