Caricare stringa da file

di il
17 risposte

Caricare stringa da file

Buonasera, ho riscontrato un problema nel caricamento di una stringa da un file di testo. Mi spiego meglio:
Nel file è presente la stringa "ciao".
Dovrei caricarla all'interno di una stringa,carattere per carattere. Il problema è che non mi da né alcun errore né alcun risultato.

#include <stdio.h>
#include <stdlib.h>
#define MAXDIM 10

void StampaStringa(char s[]){
	int i;
	i=0;
	printf("La stringa all'interno del file e'-->" );
	while(s[i]!='\0'){
		printf("%c",s[i]);
	}
	printf("\n\n");
}

int main(){
	
	int i;
	FILE *fp;
	char c;
	char stringa[MAXDIM];
	i=0;
	fp=fopen("testo.txt","r");
	while ((c=fgetc(fp)!=EOF)){
		stringa[i]=c;
		i=i+1;
		}
	stringa[i]='\0';
	StampaStringa(stringa);
	fclose(fp);
	
	system("pause");
	return 0;
}

17 Risposte

  • Re: Caricare stringa da file

    Nel main la while ha le parentesi in posizione sbagliata, deve essere
    
    	while ((c = fgetc(fp)) != EOF) {
    
    e nella funzione, dopo la printf, manca una
    
        i = i + 1;
    
  • Re: Caricare stringa da file

    oregon ha scritto:


    Nel main la while ha le parentesi in posizione sbagliata, deve essere
    
    	while ((c = fgetc(fp)) != EOF) {
    
    e nella funzione, dopo la printf, manca una
    
        i = i + 1;
    
    non va lo stesso
  • Re: Caricare stringa da file

    Ho provato a fare un altro algoritmo, ma anch'esso non stampa niente.
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXDIM 10
    
    void StampaStringa(char s[]){
    	int i;
    	i=0;
    	printf("La stringa all'interno del file e'-->" );
    	while(s[i]!='\0'){
    	printf("%c",s[i]);
    	i=i+1;
    }
    	printf("\n\n");
    }
    
    int main(){
    	
    	int i;
    	FILE *fp;
    	char c;
    	char stringa[MAXDIM];
    	
    	i=0;
    	fp=fopen("testo.txt","r");
    	do{
    		c=fgetc(fp);
    		stringa[i]=c;
    	    i=i+1;
    	}
    	while (c!=EOF);
    	stringa[i]='\0';
        StampaStringa(stringa);
    	fclose(fp);
    	
    	system("pause");
    	return 0;
    }
    sono 2 giorni che impazzisco
  • Re: Caricare stringa da file

    LollipopBB ha scritto:


    oregon ha scritto:


    Nel main la while ha le parentesi in posizione sbagliata, deve essere
    
    	while ((c = fgetc(fp)) != EOF) {
    
    e nella funzione, dopo la printf, manca una
    
        i = i + 1;
    
    non va lo stesso
    Sei sicuro?
    Io dico che ti dovresti fidare prima di passare a scrivere altro codice ...

    Ci mostri il programma con le modifiche che ti ho detto ?

    LollipopBB ha scritto:


    Ho provato a fare un altro algoritmo, ma anch'esso non stampa niente.
    Invece a me il codice mostrato funziona.

    In tutti e due i casi ... sei sicuro che il file dati esista e ci sia registrato quello che credi?
  • Re: Caricare stringa da file

    oregon ha scritto:


    LollipopBB ha scritto:


    oregon ha scritto:


    Nel main la while ha le parentesi in posizione sbagliata, deve essere
    
    	while ((c = fgetc(fp)) != EOF) {
    
    e nella funzione, dopo la printf, manca una
    
        i = i + 1;
    
    non va lo stesso
    Sei sicuro?
    Io dico che ti dovresti fidare prima di passare a scrivere altro codice ...

    Ci mostri il programma con le modifiche che ti ho detto ?

    LollipopBB ha scritto:


    Ho provato a fare un altro algoritmo, ma anch'esso non stampa niente.
    Invece a me il codice mostrato funziona.

    In tutti e due i casi ... sei sicuro che il file dati esista e ci sia registrato quello che credi?
    oh nono forse mi sono espresso male. Ho provato a cambiare il codice come mi avete consigliato. Il risultato rimane invariato, ovvero non mi da la stringa contenuta all'interno del file. Il codice è questo. Spero di non aver mancato niente:
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXDIM 10
    
    void StampaStringa(char s[]){
    	int i;
    	i=0;
    	printf("La stringa all'interno del file e'-->" );
    	while(s[i]!='\0'){
    		printf("%c",s[i]);
    		i=i+1;
    	}
    	printf("\n\n");
    }
    
    int main(){
    	
    	int i;
    	FILE *fp;
    	char c;
    	char stringa[MAXDIM];
    	i=0;
    	fp=fopen("testo.txt","r");
    	while ((c = fgetc(fp)) != EOF) {	
    		stringa[i]=c;
    		i=i+1;
    		}
    	stringa[i]='\0';
    	StampaStringa(stringa);
    	fclose(fp);
    	
    	system("pause");
    	return 0;
    }
  • Re: Caricare stringa da file

    Questo codice funziona.

    Forse hai qualche problema con il file di testo. Magari non lo trova.
  • Re: Caricare stringa da file

    oregon ha scritto:


    Questo codice funziona.

    Forse hai qualche problema con il file di testo. Magari non lo trova.
    Effettivamente ho riprovato a eseguire questo codice su un altro computer e funziona. Il problema però è, perchè invece su questo PC non riesce ad aprirlo. Ho provato anche con diversi file, tutti contenuti nella stessa cartella dove è presente il codice.
  • Re: Caricare stringa da file

    Si vede che il programma NON sta cercando il file in quella cartella.

    Usi un IDE o avvi l'eseguibile?
  • Re: Caricare stringa da file

    oregon ha scritto:


    Si vede che il programma NON sta cercando il file in quella cartella.

    Usi un IDE o avvi l'eseguibile?
    Uso Dev c. Inoltre anche con l'eseguibile non va lo stesso.
  • Re: Caricare stringa da file

    Anche con Dev funziona regolarmente.

    Sicuro che il file di testo abbia il nome giusto e contenga dei caratteri? Non c'è altra spiegazione
  • Re: Caricare stringa da file

    Con Dev ho provato gcc. Magari è il tuo compilatore che non va.

    Comunque prova sullo stesso PC con un altro IDE/compilatore.
  • Re: Caricare stringa da file

    Ho provato anche con eclipse. Ho anche aggiustato le variabili d'ambiente... il file è corretto cosi come anche il suo nome.. non so più che fare
  • Re: Caricare stringa da file

    Eclipse e quale compilatore?

    Quanto vale fp dopo la fopen?
  • Re: Caricare stringa da file

    oregon ha scritto:


    Eclipse e quale compilatore?

    Quanto vale fp dopo la fopen?
    Mingw. In che senso quanto vale fp? se faccio perror(errore) mi dice no such file or directory. (il file c'è però). ho provato un altro algoritmo e funziona. Bho non so cosa gli prenda
Devi accedere o registrarti per scrivere nel forum
17 risposte