Beppe2hd
19-10-2003, 12:19
Il problema è questo:
Devo scrivere un programma in c che elimini i commenti dal codice di un programma in c per l'appunto.
Inizialmente non devo fare riferimento a file, ma semplicenete al testi inserito sul momento.
Quindi immessa una riga del tipo:
printf("Ciao a tutti /* coomento prova */ come va"); /* commento */
deve restituire:
printf("Ciao a tutti /* coomento prova */ come va");
Quindi non eliminando il commento all'interno delle " ".
Ho scritto del codice, ma presente due problemi:
1: eliminando il commento lascia però (per come è strutturato il proggo) // .
2: una volta entrato che non elimina i commenti dentro le virgolette "" non elimina più nessun altro commento.
Percio se scrivo:
/* ciao*/ printf("Ciao a tutti /* coomento prova */ come va"); /* commento */
mi restituisce
// printf("Ciao a tutti /* coomento prova */ come va"); /* commento */
Allergo quindi il codice scritto che dovrebbe essere abbastanza chiaro.
INT e EXT stanno per interno ed esterno (ad una stringa o ad un commento):
#include <stdio.h>
#define EXT 0
#define INT 1
int main(){
char c;
char last='a';
int com=EXT;
int str=EXT;
while ((c = getchar ())!= EOF){
if ((c=='*')&&(last=='/'))
com=INT;
else if((c=='/')&&(last=='*'))
com=EXT;
if (c=='"')
str=INT;
else if((c=='"')&&(str==INT))
str=EXT;
if ((com==EXT)||(str==INT))
putchar(c);
last=c;
}
}
Ciao e grazie a chi mi aiuterà
Devo scrivere un programma in c che elimini i commenti dal codice di un programma in c per l'appunto.
Inizialmente non devo fare riferimento a file, ma semplicenete al testi inserito sul momento.
Quindi immessa una riga del tipo:
printf("Ciao a tutti /* coomento prova */ come va"); /* commento */
deve restituire:
printf("Ciao a tutti /* coomento prova */ come va");
Quindi non eliminando il commento all'interno delle " ".
Ho scritto del codice, ma presente due problemi:
1: eliminando il commento lascia però (per come è strutturato il proggo) // .
2: una volta entrato che non elimina i commenti dentro le virgolette "" non elimina più nessun altro commento.
Percio se scrivo:
/* ciao*/ printf("Ciao a tutti /* coomento prova */ come va"); /* commento */
mi restituisce
// printf("Ciao a tutti /* coomento prova */ come va"); /* commento */
Allergo quindi il codice scritto che dovrebbe essere abbastanza chiaro.
INT e EXT stanno per interno ed esterno (ad una stringa o ad un commento):
#include <stdio.h>
#define EXT 0
#define INT 1
int main(){
char c;
char last='a';
int com=EXT;
int str=EXT;
while ((c = getchar ())!= EOF){
if ((c=='*')&&(last=='/'))
com=INT;
else if((c=='/')&&(last=='*'))
com=EXT;
if (c=='"')
str=INT;
else if((c=='"')&&(str==INT))
str=EXT;
if ((com==EXT)||(str==INT))
putchar(c);
last=c;
}
}
Ciao e grazie a chi mi aiuterà