Imprimindo o código-fonte do próprio programa C

Imprimindo o código-fonte do próprio programa C

Imprimir o código-fonte de um programa C em si é diferente do problema de Quine. Aqui precisamos modificar qualquer programa C de forma que ele imprima todo o código-fonte. 

Recomendado: tente sua abordagem em {vai} primeiro antes de passar para a solução.

Abordagem

  1. Use a macro predefinida __FILE__ para obter a localização do arquivo.
  2. Abra o arquivo de código-fonte no modo de leitura e obtenha o ponteiro do arquivo fptr. Verifique se o arquivo foi aberto com sucesso ou não.
  3. Leia todo o conteúdo do arquivo usando o loop do-while e fgetc.
  4. Feche o arquivo usando a função fclose.

1. Método Macro FILE (Nome do Arquivo de Impressão)

Podemos usar os conceitos de manipulação de arquivos para imprimir o código-fonte do programa como saída. A ideia é exibir o conteúdo do mesmo arquivo em que você está escrevendo o código-fonte. A localização de um arquivo de programação C está contida em uma macro predefinida __FILE__.

Abaixo está o programa C para usar __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__  );   }      


A saída do programa acima é a localização deste arquivo C. 

Resultado do Programa 1

Implementação

O programa a seguir exibe o conteúdo deste arquivo C específico (código-fonte) porque __FILE__ contém a localização deste arquivo C em uma string. 

2. Exiba o programa

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  ;   }   

Saída:

Criar questionário