Commenti in un file

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.