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
- Use a macro predefinida __FILE__ para obter a localização do arquivo.
- 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.
- Leia todo o conteúdo do arquivo usando o loop do-while e fgetc.
- 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.
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