PDA

Visualizza la versione completa : [C] Aprire & Salvare File


unreg
27-10-2004, 21:46
Salve,

sono nuovo qui, in questa sezione non ero mai venuto. :)

da circa un mese ho inizioto lo studio del c.

oggi volevo fare un piccolo programma:

apre un file di testo, cambiare il contenuto della prima riga Ŕ lasciare il resto invariato, salvare le modifiche.

quindi ho scritto:



#include <stdio.h>

int main ()
{
FILE *File;
char Testo[] = "Prova di output su file";

File = fopen("file2.txt","at");
fputs(Testo,File);
fclose(File);
return 0;
}


ma cosa sbaglio :cry:

grazie per l'aiuto :)

gandalf45
27-10-2004, 22:59
ma cosa sbaglio
Questo ce lo devi dire tu :)
Cosa non va nel verso giusto?

unreg
28-10-2004, 06:46
non aggiorna il file cambiando la prima riga con questo: Prova di output su file

ma fa un nuovo file di testo con il suo interno solo questo: Prova di output su file :(

Fox82
28-10-2004, 10:53
Non capisco il parametro "at" nella funzione fopen: che io sappia i parametri sono "r", "w", "a" seguiti da "+" per indicare entrambe le modalitÓ (eventualmente puoi aggiungere una "b" prima o dopo il "+", ma niente altro)

Tieni presente che aprendo un file in modalitÓ "a" il cursore si trova alla fine del file, quindi non ti troverai sull'ultima riga.

unreg
28-10-2004, 12:43
mi fai un piccolo esempio di codice ?

grazie ! :)

Fox82
28-10-2004, 13:33
Un particolare che mi ero dimenticato: il file aperto in modalita append non permette la sovrascrittura delle parti giÓ scritte ma solo "l'allungamento" del file.

Per sovrascrivere devi aprire il file in modalitÓ "r+", il resto del codice va bene. Attento per˛ che la lunghezza nuova riga deve essere uguale alla vecchia: altrimenti se Ŕ pi¨ corta ti troverai i resti della vecchia nella seconda riga, se Ŕ pi¨ lunga "sconfinerai" nelle righe successive


:ciauz:

unreg
28-10-2004, 15:28
mi puoi fare un esempio per favore di come si fa ?

Fox82
28-10-2004, 16:23
Ripeto, il tuo codice funziona: devi solo cambiare il parametro "at" della funzione fopen con "r+"

:ciauz:

unreg
28-10-2004, 16:30
non va :cry:

mi scrive un file nuovo, non aggiunge o sostituisce la prima riga :(

gandalf45
28-10-2004, 17:58
Originariamente inviato da Fox82
Non capisco il parametro "at" nella funzione fopen: che io sappia i parametri sono "r", "w", "a" seguiti da "+" per indicare entrambe le modalitÓ (eventualmente puoi aggiungere una "b" prima o dopo il "+", ma niente altro)

Tieni presente che aprendo un file in modalitÓ "a" il cursore si trova alla fine del file, quindi non ti troverai sull'ultima riga.
Il parametro "t" indica che il file va aperto in modalitÓ testuale ("b" per modalitÓ binaria) :)

A dire il vero non so se quello che vuoi fare tu si p¨˛ fare cosý facilmente, con un solo comando.

E' comunque fattibile:
-apri il file in lettura
-conti il numero di caratteri che lo compongono
-crea un buffer di char dinamicamente
char *buff = malloc(caratteri_in_file * sizeof(char));
-copia il contenuto del file in buff
-chiudi il file
-modifica buff a piacimento
-apri il file in scrittura ("wt");
-copiaci buff dentro
-chiudi il file
-libera la memoria free(buff);

Loading