Questo esercizio consiste nello scrivere un programma che stampa tutte le linee di un file che non sono commenti, dove un commento è semplicemente una linea che inizia con il carattere '#'.
Si tratta chiaramente di leggere un file linea per linea. Ogni volta che si legge una riga, si controlla se il primo carattere è '#', e si stampa la linea su schermo solo in caso contrario.
Il programma completo commenti.c è riportato qui sotto.
/*
Stampa le linee di un file che non sono commenti,
dove i commenti sono linee che iniziano con il
carattere #
*/
#include<stdlib.h>
#include<stdio.h>
int main() {
FILE *fd;
char buf[200];
char *res;
/* apre il file */
fd=fopen("commenti.txt", "r");
if( fd==NULL ) {
perror("Errore in apertura del file");
exit(1);
}
/* lettura linea per linea */
while(1) {
res=fgets(buf, 200, fd);
if(res==NULL)
break;
if( buf[0] != '#' )
printf("%s", buf);
}
/* chiude il file */
fclose(fd);
return 0;
}
Si noti che non vengono considerati commenti le linee in cui il carattere '#' non è in prima posizione. Non è difficile modificare il programma in modo tale che sia considerato come commento anche solo una parte di linea che segue un carattere '#'. Il programma commentidue.c è la versione modificata del programma di sopra. Si noti che, in questo caso, una linea che inizia con '#' viene stampata come linea vuota.