Stampa del codice sorgente di un programma C stesso

Stampa del codice sorgente di un programma C stesso

Stampare il codice sorgente di un programma C stesso è diverso dal problema Quine. Qui dobbiamo modificare qualsiasi programma C in modo che stampi l'intero codice sorgente. 

Consigliato: prova il tuo approccio {va} prima di passare alla soluzione.

Approccio

  1. Utilizza la macro predefinita __FILE__ per ottenere la posizione del file.
  2. Apri il file del codice sorgente in modalità lettura e ottieni il puntatore al file fptr. Controlla se il file è stato aperto correttamente o meno.
  3. Leggi tutto il contenuto del file usando il ciclo do- while e fgetc.
  4. Chiudi il file utilizzando la funzione fclose.

1. Metodo macro FILE (stampa del nome del file)

Possiamo usare i concetti di gestione dei file per stampare il codice sorgente del programma come output. L'idea è quella di visualizzare il contenuto dello stesso file su cui stai scrivendo il codice sorgente. La posizione di un file di programmazione C è contenuta all'interno di una macro predefinita __FILE__.

Di seguito è riportato il programma C da utilizzare __FILE__:

C
      // C program to display the    // location of the file   #include         // Driver code   int     main  ()   {      // Prints location of C this C code.      printf  (  '%s'       __FILE__  );   }      


L'output del programma sopra è la posizione di questo file C. 

Risultati del programma 1

Attuazione

Il seguente programma visualizza il contenuto di questo particolare file C (codice sorgente) perché __FILE__ contiene la posizione di questo file C in una stringa. 

2. Visualizzare il programma

C
   // C program that prints its source code.   #include          // Driver code   int     main  (  void  )   {      // We can append this code to any C program      // such that it prints its source code.      char     c  ;         FILE     *  fp     =     fopen  (  __FILE__       'r'  );          do      {      c     =     fgetc  (  fp  );      putchar  (  c  );      }      while     (  c     !=     EOF  );          fclose  (  fp  );          return     0  ;   }   

Produzione:

Crea quiz