PDA

View Full Version : [C] New line


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

sirus
20-06-2008, 18:03
Generalmente nei sistemi UNIX il newline viene tradotto in un LF, nei Mac con un CR ed in Windows con un CR LF. Ad ogni modo '\n' funziona correttamente in tutti i sistemi.

wingman87
20-06-2008, 20:29
Grazie, č proprio quello che volevo sapere :)

sirus
20-06-2008, 20:56
Grazie, č proprio quello che volevo sapere :)

Dimenticavo, l'ho copiato ed incollato e compilato sia su Ubuntu che su Mac OS, funziona in entrambi i casi. ;)