PDA

View Full Version : [C]Gestione lista..please help


the designer
20-09-2010, 12:24
Ciao a tutti,mi rivolgo a voi xke devo risolvere un problema che all'apparenza sembrava semplicissimo..ma ci sto sbattendo la testa da 2 giorni.
In pratica ho un file txt da modificare..più precisamente questo txt contiene dei tag image che vorrei eliminare ricorsivamente ma nn ci riesco..
Ad esempio il file txt contiene ciò:
ajajajajiajisjdijasdiajsdijasidj
<jiajijaisjaisjaijsaisjalkgfignrinvbirn>

ahahsduhasfiadjfidivmdivmd

Ecco,x sommi capi dovrei arrivare ad avere invece:
ajajajajiajisjdijasdiajsdijasidj

ahahsduhasfiadjfidivmdivmd

Ma proprio nn riesco..

Il codice fin'ora scritto è il seguente:


# include <stdio.h>
int main ()
{
FILE *pf ;
int i,fileDimm=0;
char *a;
pf = fopen ( "xxxxxx.txt" , "r" ) ;

while(! feof(pf))
{
fgetc(pf);
fileDimm++;

}
fileDimm--,
a=(char*)malloc(sizeof(char) * fileDimm+1);
fseek(pf,0,SEEK_SET);

while ( ! feof ( pf ) )
{
fgets(a,200,pf);
printf("%s\n",a);

}
fclose ( pf ) ;
return 0;
}

Riesco a leggere la lista ma come potrei modificarla?

Grazie in anticipo!

banryu79
22-09-2010, 08:48
Ciao, prima di stendere il codice del tuo algoritmo dovresti definire l'algoritmo stesso, e fissarne i singoli "passi".
Ad esempio, supponendo che il formato del file in input da elaborare sia questo:

ajajajajiajisjdijasdiajsdijasidj
<jiajijaisjaisjaijsaisjalkgfignrinvbirn>

ahahsduhasfiadjfidivmdivmd
...

e che il problema richieda di produrre un altro file in cui non siano più presenti le righe contenute tra il carattere '<' e il carattere '>' potresti cominciare ad analizzare il problema per "spezzarlo" in problemi più piccoli, e dunque più facili da risovere:
1) dato un file in input, leggere ogni riga, una alla volta;
2) data una riga, stabilire se questa riga vada tenuta o scartata;
3) aprire un file in output, scrivere una riga nel file.

Prova a ragionare sui singoli punti per trovare una soluzione.
Se un singolo punto ti sembra ancora troppo complesso, lo "spezzi" ulteriormente, ad esempio il punto (2):
2.a) leggere il primo e l'ultimo carattere della riga
2.b) stabilire se entrambi i due carateri sono uguali rispettivamente a '<' e a '>'

Comunque in linea di massima io vedo due approcci:
1)
- leggi il file in input una riga alla volta, finchè non ci sono più righe da leggere e:
--- se la riga è da tenere la metti in una lista in memoria;
- apri lo stesso file, questa volta in scrittura;
- leggi dalla lista in memoria una riga alla volta, finchè non ci sono più righe da leggere e:
--- scrivi la riga nel file.
oppure:
2)
- apri il file in input in lettura;
- apri un nuovo file in scrittura;
- leggi il file in input una riga alla volta, finchè non ci sono più righe da leggere e:
--- se la riga è da tenere, la scrivi nel nuovo file.