View Full Version : [C] File di testo
beppegrillo
07-06-2006, 13:29
if((fs = fopen(TEMP_FILE,"r+")) == NULL)
perror("Errore crezione file"), exit(-1);
while (fgets(riga,MAX_SEM_FILE_SIZE,fs)) {
token = strtok(riga,":");
if ((strncmp(token,name,strlen(token)) == 0)&& (trovato == 0)) {
trovato = 1;
strncpy(my_sem_struct->name,token,strlen(token));
str = strtok(NULL,":");
my_sem_struct->mode = atoi(str);
str = strtok(NULL,":");
my_sem_struct->value = atoi(str);
/* if (fwrite("1",sizeof(char),MAX_SEM_FILE_SIZE,fs) < 0)
perror("errore_scrittura");*/
}
Ho un file di testo formattato in un certo modo
xxx:xx:xx su ogni riga, ora avrei la necessità di aggiornare una riga, come faccio a sovrascrivere xxx:xx:xx con xxx:yy:yy?
Ho un file di testo formattato in un certo modo
xxx:xx:xx su ogni riga, ora avrei la necessità di aggiornare una riga, come faccio a sovrascrivere xxx:xx:xx con xxx:yy:yy?Se il nuovo testo ha la stessa lunghezza del vecchio testo, basta posizionarsi sul file all'offset dove inizia il vecchio testo e fare ad esempio una fwrite per scrivere gli N byte del nuovo testo.
Se non è così ... bisogna riscrivere per intero il file.
beppegrillo
07-06-2006, 14:32
Se il nuovo testo ha la stessa lunghezza del vecchio testo, basta posizionarsi sul file all'offset dove inizia il vecchio testo e fare ad esempio una fwrite per scrivere gli N byte del nuovo testo.
Se non è così ... bisogna riscrivere per intero il file.
non ha la stessa dimensione, ho usato un fseek in modo tale che dll'offset corrente sottraesse la riga appena letta e che mi interessa sovrasvrivere, ci scriva degli spazi e poi risovrascriva.
grazie :)
beppegrillo
07-06-2006, 14:57
non ha la stessa dimensione, ho usato un fseek in modo tale che dll'offset corrente sottraesse la riga appena letta e che mi interessa sovrasvrivere, ci scriva degli spazi e poi risovrascriva.
grazie :)
c'è un problema però se la stringa è
ciaociao \n
io la cancello tutta e po ci riscrivo
ciao\n___
i trattini rappresentano gli spazi lasciati dalla cancellazione preceente, e purtroppo me li ritrovo nella riga successiva
c'è un problema però se la stringa è
ciaociao \n
io la cancello tutta e po ci riscrivo
ciao\n___
i trattini rappresentano gli spazi lasciati dalla cancellazione preceente, e purtroppo me li ritrovo nella riga successivaDevi riscrivere il file.
BountyKiller
07-06-2006, 15:26
è banale, basta che usi la sequenza escape di carriage return ( \r) senza utilizzare \n.
ciao! :)
trallallero
07-06-2006, 15:42
c'è un problema però se la stringa è
ciaociao \n
io la cancello tutta e po ci riscrivo
ciao\n___
i trattini rappresentano gli spazi lasciati dalla cancellazione preceente, e purtroppo me li ritrovo nella riga successiva
secondo me ha ragione andbin, devi riscrivere il file.
L'alternativa potrebbe essere: rifai tutto con file a record a dimensione fissa.
Oppure, non puoi mettere il "\n" dopo gli spazi ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.