Boa noite, senhores! Gostaria de pedir ajuda em um exercício da faculdade. O desafio é criar um programa que imprime o próprio conteúdo de uma maneira que a saída mostrada na tela é idêntica ao código escrito dentro do programa. A princípio, me veio na cabeça a ideia de utilização de recursividade, impressão de um array de char com uma cópia do código e até mesmo abrir o próprio arquivo ".c" e imprimir seu conteúdo. este ultimo método foi o único funcional e este é um exemplo utilizado:
#include <stdio.h>
#include <stdlib.h>
void imprime();
int main(void)
{
// printf("codigo imprimindo a si proprio");
imprime();
return EXIT_SUCCESS;
}
void imprime()
{
char file[2000];
FILE *code = fopen("ex9.c", "r");
if (code == 0)
{
printf("ERRO! O PROGRAMA NAO PODE SER EXECUTADO CORRETAMENTE DEVIDO A AUSENCIA DE UM ARQUIVO VITAL.\n");
}
while (fgets(file, 2000, code) != NULL)
printf("%s", file);
fclose(code);
}
entretanto, essa ideia caiu por terra no momento que o professor falou que a mesma não pode ser utilizada.
O principal desafio deste problema é fazer com que o ultimo printf() também imprima a si mesmo de uma forma que a saida seja igual a que está presente no código:
[código];
printf("[código]");
printf("printf("[código]");");
Como vocês podem ver, a primeira função imprime o código, a segunda imprime a primeira, mas não tem como ela "se imprimir" tendo a necessidade de haver uma nova função para imprimir a anterior. Sinceramente, já esgotei todas as minhas idéias. caso alguém possa me ajudar, ficarei muito grato!