Oppure

Loading
20/01/14 13:00
zvengenz
Il codice che ho scritto è questo:
#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 20/01/14 13:15
aaa
20/01/14 13:43
dmr
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 20/01/14 13:46
aaa
20/01/14 14:34
zvengenz
Ah grazie ecco, e come faccio a stamparlo tutto?
aaa
20/01/14 19:25
dmr
Per non andare a complicarti la vita, puoi fare semplicemente:
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ò:
scanf("%s",&scelta); 


La & non si mette perchè l'array scelta viene "interpretato" come se fosse un puntatore a 1000 caratteri.
Ultima modifica effettuata da dmr 20/01/14 19:29
aaa
21/01/14 11:47
zvengenz
Ho provato ma continua a leggere solo una riga. Soluzioni? :(
aaa
21/01/14 11:52
dmr
Strano, puoi postare il sorgente modificato?
aaa
21/01/14 15:55
zvengenz
Eccolo
#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;
}
aaa
21/01/14 18:54
dmr
fclose(stream); va fuori dal while.
aaa