Non e' possibile "inserire" dati nel file ma solamente "sostituire" caratteri.
P.S. E' necessario aprire un nuovo thread perche' non hai piu' un problema di fwrite ...
Non e' possibile "inserire" dati nel file ma solamente "sostituire" caratteri.
P.S. E' necessario aprire un nuovo thread perche' non hai piu' un problema di fwrite ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Giusto, preciso che è però possibile "appendere" dati in coda ad un file esistente.Originariamente inviato da oregon
Non e' possibile "inserire" dati nel file ma solamente "sostituire" caratteri.
P.S. E' necessario aprire un nuovo thread perche' non hai piu' un problema di fwrite ...![]()
01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
All errors are undocumented features waiting to be discovered.
Sicuro ... non a caso avevo scritto "inserire" ...Originariamente inviato da Samuele_70
Giusto, preciso che è però possibile "appendere" dati in coda ad un file esistente.![]()
![]()
No MP tecnici (non rispondo nemmeno!), usa il forum.
ero sicuro di questo...e nonostante ciò ho voluto fare il programma cosìOriginariamente inviato da oregon
Sicuro ... non a caso avevo scritto "inserire" ...![]()
..il problema è che il file rimane intatto...non sostituisce neanche i caratteri..
qual è il metodo più semplice per fare quello che ho chiesto?![]()
Per evidenziare la sostituzione dei caratteri, ecco la funzione modificata
Per risolvere il tuo problema, quello di aggiungere dati "tra" quelli gia' esistenti, devi creare un nuovo file leggendo da quello vecchio e, alla fine, eliminare il vecchio ...codice:void raddoppiaInFile (FILE *file, char c) { int car; while((car=fgetc(file))!=EOF) if(car==c) { fseek(file, 0, SEEK_CUR); fputc(car, file); fseek(file, 0, SEEK_CUR); } }
No MP tecnici (non rispondo nemmeno!), usa il forum.
Originariamente inviato da oregon
Per evidenziare la sostituzione dei caratteri, ecco la funzione modificata
Per risolvere il tuo problema, quello di aggiungere dati "tra" quelli gia' esistenti, devi creare un nuovo file leggendo da quello vecchio e, alla fine, eliminare il vecchio ...codice:void raddoppiaInFile (FILE *file, char c) { int car; while((car=fgetc(file))!=EOF) if(car==c) { fseek(file, 0, SEEK_CUR); fputc(car, file); fseek(file, 0, SEEK_CUR); } }
scusami ma non ho capito xke hai posizionato l'indicatore di posizione del file alla posizione corrente (con fseek) :master: ..a me sembra un'istruzione inutile (fgetc si occupa di far scorrere l'indicatore), ma dato che senza non funziona, vorrei capire perchè
Da un qualsiasi manuale o libro ...Originariamente inviato da ant_alt
scusami ma non ho capito xke hai posizionato l'indicatore di posizione del file alla posizione corrente (con fseek) :master: ..a me sembra un'istruzione inutile (fgetc si occupa di far scorrere l'indicatore), ma dato che senza non funziona, vorrei capire perchè
"On streams open for update (read+write), a call to fseek allows to switch between reading and writing."
No MP tecnici (non rispondo nemmeno!), usa il forum.
sto odiando il mio Deitel&Deitel, per ogni funzione devo scervellarmi su internet..per fseek c'è un paragrafino di 3 righe.Originariamente inviato da oregon
Da un qualsiasi manuale o libro ...
"On streams open for update (read+write), a call to fseek allows to switch between reading and writing."
praticamente in un file aperto con "r+" ho bisogno di una chiamata "nulla" di fseek per passare letteralmente dall'uso di funzioni per la lettura alla scrittura?
abbi pazienza ma in php queste cose non esistono proprio e sono una novità per me e vorrei capirle bene (anche perchè l'esame è lunedi):
1. fopen in modalità "r+"
2. chiamo ad esempio fgetc (lettura)
3. per usare una funzione di scrittura devo prima chiamare fseek
4. fputc
5. di nuovo fseek per tornare in "modalità" lettura
se al posto del punto 2 avessi messo una fputc per usare fgets avrei comunque dovuto chiamare prima fseek?giusto?
spero di essermi spiegato
ps: forse questa cosa esiste solo per funzioni sui char (appunto fgetc e fputc) dato che nell'esercizio precedente con fread fwrite non l'abbiamo usata
Sì ... dai un'occhiata a
http://forum.html.it/forum/showthrea...readid=1297639
No MP tecnici (non rispondo nemmeno!), usa il forum.
siamo in dirittura d'arrivo, volevo ringraziare i parenti e gli amici tutti che mi hanno aiutato
http://forum.html.it/forum/showthrea...1#post10931971
ho visto qui che esistono remove e rename in stdio.h
ma come le ho usate non funzionano (il file dump.txt è creato correttamente)
codice:void raddoppiaInFile (FILE *file, char c) { int car; FILE *temp= fopen("dump.txt", "w"); while((car=fgetc(file))!=EOF){ fputc(car, temp); if(car==c) fputc(car, temp); fclose(file); fclose(temp); remove ("testo.txt"); rename("dump.txt", "testo.txt"); //ritornano 0 se vanno a buon fine, 1 altrimenti } } int main (){ FILE *file1 = fopen ("testo.txt","r+"); if (file1==NULL) printf("file not found"); char car='a'; raddoppiaInFile (file1, car); fclose(file1); system("PAUSE"); return 0; }