PDA

Visualizza la versione completa : [C] Gestione lista da file: eliminazione dei tag inutili


TheDesigner88
20-09-2010, 14:11
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!

LeleFT
20-09-2010, 14:33
Prendi anche visione del Regolamento interno (http://forum.html.it/forum/showthread.php?s=&threadid=973887) in particolare le sezioni in cui si indicano i principi guida per i titoli delle discussioni (linguaggio di programmazione e contenuto) e la sezione su come si deve postare il codice.

In futuro, segui le indicazioni del regolamento.


Ciao. :ciauz:

linoma
20-09-2010, 15:56
Ma il tuo file é organizzato a linee? Ogni linea ha un tag?

TheDesigner88
21-09-2010, 01:07
Originariamente inviato da linoma
Ma il tuo file é organizzato a linee? Ogni linea ha un tag?

no no..è un semplice file di testo..ma vorrei che venisse cancellata la linea che inizia con "<" e termina con ">"..

linoma
21-09-2010, 07:16
prova cs,



char chr,*buffer;
int remove_start;
unsigned long len;

remove_start = 0;
len = 0;
while(!feof(fp)){
ch = fgetc(fp);
if(ch == EOF)
break;
if(ch == '<')
remove_start = 1;
else if(ch == '>')
remove_start = 0;
else if(!remove_start)
buffer[len++] = ch;
}

TheDesigner88
21-09-2010, 16:49
Originariamente inviato da linoma
prova cs,



char chr,*buffer;
int remove_start;
unsigned long len;

remove_start = 0;
len = 0;
while(!feof(fp)){
ch = fgetc(fp);
if(ch == EOF)
break;
if(ch == '<')
remove_start = 1;
else if(ch == '>')
remove_start = 0;
else if(!remove_start)
buffer[len++] = ch;
}


ok il codice funziona perfettamente,però il problema da risolvere è cambiato in modo radicale..diciamo che dovrei modificare il txt in base al numero di righe..cioè:


blablablablablabla
blablalblalblalblalbllblalblalbla
note____________
_______________
_______________


Ecco vorrei eliminare ricorsivamentele le 4 righe successive alla parola note..col confonto dei caratteri nn credo sia una grande idea..

LeleFT
21-09-2010, 17:12
Se il problema è cambiato radicalmente e non ha più a che vedere con quanto fin ora discusso, si deve aprire una nuova discussione, dandole un nuovo titolo (conforme alla nuova richiesta).

Resta ben inteso che le capacità, le nozioni e i suggerimenti dati fino ad ora, devono essere tenuti in considerazione. Questo significa che, se quanto discusso finora è utile a risolvere anche il nuovo problema, non ha senso nemmeno aprire una nuova discussione: si deve sempre tenere presente che questo è un forum di discussione.


Ciao. :ciauz:

TheDesigner88
21-09-2010, 17:20
Si si mi sembra giusto..però ecco se il nuovo problema può essere al centro di una nuova discussione,perchè non aprirla?
in fondo sto ancora cercando la soluzione..

LeleFT
21-09-2010, 17:57
Originariamente inviato da TheDesigner88
però ecco se il nuovo problema può essere al centro di una nuova discussione,perchè non aprirla?
in fondo sto ancora cercando la soluzione..

Non è a questo che mi riferivo: se i suggerimenti che hai ricevuto qui sono utili a risolvere il nuovo problema, non ha senso aprire una nuova discussione che porterebbe alle stesse indicazioni.

Tutto qui.

Per il resto, hai già aperto correttamente la nuova discussione.


Ciao. :ciauz:

Loading