Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - cercare stringhe all'interno di file e eliminarle
Forum - C/C++ - cercare stringhe all'interno di file e eliminarle

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Hack (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 09/05/2006

Segnala al moderatore
Postato alle 18:00
Lunedì, 09/10/2006
Ciao a tutti.:D

Io ho un file di testo e voglio cercare al suo interno tutte le parti che sono contenute all'interno dei commenti del C.

Esempio:
Codice sorgente - presumibilmente C/C++

  1. testo
  2. qualsiasi
  3. /* commento del C che dovrà essere eliminato */



Quali consigli mi date per gestire al meglio questo tipo di operazione?
Io pensavo di leggere carattere per carattere il file passato, e di memorizzare in una variabile temporanea 1 se il carattere precedente è una / o 0 altrimenti.
:-?

PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 18:53
Lunedì, 09/10/2006
non è una cattiva idea...cerca carattere per carattere i caratteri (scusa il gioco di parole) /* e  ogni qualvolta lo trovi cancelli da li fino a *\
ciao


Il vero sapiente è colui che sa di non sapere.
    ____________________________________
Per qualsiasi aiuto NON scrivete messaggi in privato alla e-mail perchè li cancello senza manco aprirli. Solo qui.
PM Quote
Avatar
Hack (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 09/05/2006

Segnala al moderatore
Postato alle 23:50
Lunedì, 09/10/2006
Ok. Il fatto è che il file passato può essere un sorgente scritto in C di un software e oltre ai commenti (da eliminare), nella forma che ho presentato prima, può anche avere i caratteri / e * all'interno di un printf (che non sono da eliminare).

Esempio:
Codice sorgente - presumibilmente C/C++

  1. /* commento da eliminare */
  2. int x;
  3. x = f1();
  4. printf ("/* questo commento all'interno del printf non deve essere eliminato */ Risultato = %d", x);



Questo costituisce un caso particolare più difficile da gestire.:(
Come potrei fare?

PM Quote
Avatar
4x4lu5 (Ex-Member)
Rookie


Messaggi: 41
Iscritto: 16/08/2006

Segnala al moderatore
Postato alle 2:33
Martedì, 10/10/2006
Ciao, te la butto li poi vedi tu se puo esserti di aiuto :)
Potresti implementare una struttura condizionale (a me verrebbe in mente uno switch, x es) che controlla se la scritta nn è 1 printf e in qual caso nn ti cancella niente fino a che nn si chiude la parentesi
spero di essermi spiegato, tipo in pseudocodice

switch c
case 'p':
if (i==0)        
      i++;
case 'r':
  if (i==1)
      i++;
case 'i':
  if (i==2)
      i++;
e cosi via,
alla fine metti tipo
case 'f':
  if (i==5)
     printf=1;

nel caso di default metti i=0 e controlli che l'istanza di ql che leggi sia correttamente 1 stringa printf e poi qnd printf è 1 controlli solo le parentesi fino a che il numero di parentesi aperte sia uguale a quelle chiuse, credo che così dovrebbe andare (te lo auguro) a presto :)

PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 13:43
Martedì, 10/10/2006
dimentchi i break alla fine di ongi case altrimenti considerererà solo il default :k:


Il vero sapiente è colui che sa di non sapere.
    ____________________________________
Per qualsiasi aiuto NON scrivete messaggi in privato alla e-mail perchè li cancello senza manco aprirli. Solo qui.
PM Quote
Avatar
4x4lu5 (Ex-Member)
Rookie


Messaggi: 41
Iscritto: 16/08/2006

Segnala al moderatore
Postato alle 2:15
Mercoledì, 11/10/2006
dimentichi ql che ho scritto prima del testo:
"in pseudocodice"
e nn x polemizzare :)
a presto :)

Ultima modifica effettuata da 4x4lu5 il 11/10/2006 alle 2:19
PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 21:37
Giovedì, 12/10/2006
ti assicuro che non volevo polemizzare...ammetto di non aver letto la parola pseudocodice semplicemente siccome è scritto tutto in codice ho aggiunto un pezzettino nel caso il nostro amico avesse voluto provare il tuo codice...non avevo fini oscuri :k:
p.s. scusate per il tentato omicidio alla linguaggio italiana :D

Ultima modifica effettuata da Fr3d3R!K il 12/10/2006 alle 21:38


Il vero sapiente è colui che sa di non sapere.
    ____________________________________
Per qualsiasi aiuto NON scrivete messaggi in privato alla e-mail perchè li cancello senza manco aprirli. Solo qui.
PM Quote
Avatar
4x4lu5 (Ex-Member)
Rookie


Messaggi: 41
Iscritto: 16/08/2006

Segnala al moderatore
Postato alle 23:24
Giovedì, 12/10/2006
certo, neanche io volevo polemizzare :)
a presto

PM Quote
Avatar
Hack (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 09/05/2006

Segnala al moderatore
Postato alle 16:26
Venerdì, 13/10/2006
Grazie mille delle risposta.
Ho capito lo switch che mi proponi di fare, ma come faccio a vedere poi la chiusura dell'istruzione printf?
Potrebbe darsi che all'interno del printf ci sia una parentesi chiusa che però viene stampata a video e non corrisponde alla vera fine dell'istruzione.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo