Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15

    [C] problema sostituzione parola in un file

    Salve a tutti!
    sto provando a a sostituire una parola da me inserita(parolaOriginale) con una nuova parola (parolaSostituta) ma il programma mi cancella tutto il testo presente nel file! non capisco per quale motivo ... di seguito vi passo il codice della funzione main e della funzione .c grazie in anticipo a tutti
    FUNZIONE MAIN
    codice:
    int main(){
        char* f="a1.txt";
        char* p="odiano";
        char* p1="amano";
        char* f1;
        f1=sostituisciParola(f,p,p1);
        stampaTesto(f1);
        return 0;
    }
    FUNZIONE .C
    codice:
    char* sostituisciParola(char* filename,char* parolaOriginale,char* parolaSostituta){
        FILE* file=fopen(filename,"w+");
        if(file==NULL){
            printf("errore nell'aperura del file");
            exit(1);
        }
        char* p;
        while(!feof(file)){
            fscanf(file,"%s",p);
            if(strcmp(p,parolaOriginale)==0){
                fprintf(file,"%s",parolaSostituta);
            }
            else{
                fprintf(file,"%s",p);
            }
        }
        fclose(file);
        return filename;
    }
    
    void stampaTesto(char* filename){
        FILE* file1=fopen(filename,"r");
        if (file1==NULL){
            printf("errore nell'apertura file");
            exit(1);
        }
        char* d;
        while(!feof(file1)){
            fscanf(file1,"%s",d);
            printf("%s ",d);
        }
        fclose(file1);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Prima di tutto devi allocare lo spazio in memoria per i puntatori che usi nelle funzioni. E' un caso se non va in crash il programma ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    ho modificato il codice ma questa volta nel file mi scrive solamente un carattere del codice ASCII non compreso tra quelli leggibili da 33 a 126

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da ggd94 Visualizza il messaggio
    ho modificato il codice ma questa volta nel file mi scrive solamente un carattere del codice ASCII non compreso tra quelli leggibili da 33 a 126
    Modificato come ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    al posto di char*p (presente nella funzione sostituisciParola) ho messo char p[256] e al posto di char*d(presente nella funzione stampaTesto) ho messo char d[256]

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    La modalità di apertura w+ cancella il contenuto del file originale (vedi documentazione su fopen).

    Il modo corretto è r+ ma la lettura/scrittura con lo stesso file può risultare tediosa. Meglio aprirne un secondo e scrivere il contenuto modificato eliminando il primo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    creando direttamente un secondo file diverso dal primo?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da ggd94 Visualizza il messaggio
    creando direttamente un secondo file diverso dal primo?
    Sì, dal primo leggi e nel secondo scrivi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    ok grazie mille !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.