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.