Caricare stringa da file

di Anonimizzato28137 il
17 risposte
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

  • 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;
    
  • 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
  • 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
  • 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?
  • 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;
    }
  • Questo codice funziona.

    Forse hai qualche problema con il file di testo. Magari non lo trova.
  • 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.
  • Si vede che il programma NON sta cercando il file in quella cartella.

    Usi un IDE o avvi l'eseguibile?
  • 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.
  • Anche con Dev funziona regolarmente.

    Sicuro che il file di testo abbia il nome giusto e contenga dei caratteri? Non c'è altra spiegazione
  • Con Dev ho provato gcc. Magari è il tuo compilatore che non va.

    Comunque prova sullo stesso PC con un altro IDE/compilatore.
  • 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
  • Eclipse e quale compilatore?

    Quanto vale fp dopo la fopen?
  • 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