logo

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' title=

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