Modificare un file in c

di Anonimizzato18667 il
6 risposte
Ciao a tutti sono nuovo ,stavo tentando di creare un piccolo programma che apra un file e che ne modifichi il contenuto raddoppiando i singoli caratteri .
esempio :
testo originale : aaa
risultato : bbb

questo e il codice :

#include<stdlib.h>
#include<stdio.h>

int main() {
FILE *FPtr;
char x, y;



/* apre il file */
if ((FPtr=fopen("test.txt", "rb+"))== NULL){
printf("Errore in apertura del file\n");
return 0;
}else{


/* ciclo di lettura */
while ( !feof( FPtr ) ) {

/* legge un carattere */
fread(&x, sizeof(char), 1, FPtr);

/* riposiziona */
fseek(FPtr, -sizeof(char), SEEK_CUR);

/* mette il doppio in y e lo scrive */
y=2*x;
fwrite(&y, sizeof(char), 1, FPtr);
}


/* chiude il file */
fclose(FPtr);
}

return 0;
}

il problema forse anche stupido e che il ciclo no termina mai !! fa il primo passaggio correttamente ma quando ritorna inizia un ciclo infinito che mi stampa sempre la seconda lettera
come mai ?? potete spiegarmi come risolvere e a cosa e dovuto questo errore ??
grazie in anticipo !

6 Risposte

  • Il codice va postato formattato e con i tag code, senza non si legge!
  • Consiglio personale a volte conviene utilizzare le cose che si conoscono bene anche se possono sembrare stupide e non serve strafare. Ho provato a fare il tuo esercizio con passaggi abbastanza elementari e sono arrivata subito a soluzione. Bastava prelevare il contenuto del file e salvare il contenuto su di una stringa. Per poi riscrivere nel file la stringa prelevata sommando 1.
     for(i=0; i<strlen(buf); i++){
      fprintf(fp, "%c", buf[i]+1);
     }
  • Come ha detto SVNiko:

    SVNiko ha scritto:


    Il codice va postato formattato e con i tag code, senza non si legge!
    Risulta tutto molto più leggibile
  • Guarda che questo thread è stato superato da altri thread che lo stesso autore ha aperto e in cui ha avuto altre risposte.
  • Non lo sapevo. Io ci ho provato
Devi accedere o registrarti per scrivere nel forum
6 risposte