Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Leggere e scrivere su file
Forum - C/C++ - Leggere e scrivere su file

Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 22:51
Martedì, 29/01/2013
Ciao,
ho fatto un semplice metodo che legge un carattere da un file di testo e poi vi scrive sopra due caratteri (a e b):
Codice sorgente - presumibilmente C/C++

  1. void Prova() {
  2.         FILE* fp = fopen("C:\\ProveC\\binfile\\prova.txt", "r+");
  3.         char c;
  4.         fscanf(fp, "%c", &c);
  5.         printf("Letto: %c", c);
  6.         fprintf(fp, "%c%c", 'a', 'b');
  7.         fclose(fp);
  8. }



So che con "r+" posso sia leggere che scrivere, ma il codice sopra in questione non funziona, come mai? è come se non potessi scrivere alla fine del file, se ad esempio aggiungo:
    fseek(fp, -1, SEEK_CUR);
prima di fprintf, oppure mi sposto all'inizio del file, funziona tutto correttamente, perchè? .. sono un pò confuso :-|

Ultima modifica effettuata da GrG il 29/01/2013 alle 22:52


...
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:43
Mercoledì, 30/01/2013
http://www.cplusplus.com/reference/cstdio/fopen/

For files open for appending (those which include a "+" sign), on which both input and output operations are allowed, the stream should be flushed (fflush) or repositioned (fseek, fsetpos, rewind) between either a writing operation followed by a reading operation or a reading operation which did not reach the end-of-file followed by a writing operation.

Ciao


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 19:58
Giovedì, 31/01/2013
è un piacere rivederti :D

non avevo fatto caso a questa nota, grazie ancora una volta :)


...
PM Quote