wingman87
20-06-2008, 16:25
Dovrei fare un programmino che prende in input un file con dei commenti e restituisce in output (su console o su un altro file) lo stesso file senza i commenti. I commenti iniziano con il carattere '%' e terminano a fine riga. Io ho scritto questo:
#include <stdio.h>
int main(int argc, char *argv[]){
if(argc==1 || argc>3){
printf("Lanciare il programma con i soli file di input e (facoltativo) di output come argomento\n");
return 1;
}
FILE *fr=fopen(argv[1],"r");
if(!fr){
printf("Errore nell'apertura di %s\n",argv[1]);
return 1;
}
FILE *fw=stdout;
if(argc==3){
fw=fopen(argv[2],"w");
if(!fw){
printf("Errore nell'apertura/creazione di %s\n",argv[2]);
return 1;
}
}
char c;
c=fgetc(fr);
while(!feof(fr)){
while(!feof(fr) && c!='%'){
if(!c==fputc(c,fw)){
printf("Errore nella scrittura in %s\n",argv[2]);
return 1;
}
c=fgetc(fr);
}
while(!feof(fr) && c!='\n'){
c=fgetc(fr);
}
}
fclose(fr);
fclose(fw);
printf("\nCompletato!\n");
return 0;
}
Funziona bene, perņ ho un dubbio (forse stupido): io l'ho testato su windows, perņ so che il prof usa linux, su linux il carattere di fine riga ('\n') č lo stesso?
Grazie
#include <stdio.h>
int main(int argc, char *argv[]){
if(argc==1 || argc>3){
printf("Lanciare il programma con i soli file di input e (facoltativo) di output come argomento\n");
return 1;
}
FILE *fr=fopen(argv[1],"r");
if(!fr){
printf("Errore nell'apertura di %s\n",argv[1]);
return 1;
}
FILE *fw=stdout;
if(argc==3){
fw=fopen(argv[2],"w");
if(!fw){
printf("Errore nell'apertura/creazione di %s\n",argv[2]);
return 1;
}
}
char c;
c=fgetc(fr);
while(!feof(fr)){
while(!feof(fr) && c!='%'){
if(!c==fputc(c,fw)){
printf("Errore nella scrittura in %s\n",argv[2]);
return 1;
}
c=fgetc(fr);
}
while(!feof(fr) && c!='\n'){
c=fgetc(fr);
}
}
fclose(fr);
fclose(fw);
printf("\nCompletato!\n");
return 0;
}
Funziona bene, perņ ho un dubbio (forse stupido): io l'ho testato su windows, perņ so che il prof usa linux, su linux il carattere di fine riga ('\n') č lo stesso?
Grazie