Imprimarea codului sursă al unui program C în sine
Imprimarea codului sursă al unui program C este diferită de problema Quine. Aici trebuie să modificăm orice program C astfel încât să imprime întregul cod sursă.
Recomandat: Vă rugăm să încercați abordarea dvs {merge} mai întâi înainte de a trece la soluție.
Abordare
- Utilizați macrocomanda predefinită __FILE__ pentru a obține locația fișierului.
- Deschideți fișierul cu codul sursă în modul de citire și obțineți indicatorul de fișier fptr. Verificați dacă fișierul a fost deschis cu succes sau nu.
- Citiți tot conținutul fișierului folosind bucla do-while și fgetc.
- Închideți fișierul folosind funcția fclose.
1. Metoda FILE Macro (Imprimarea numelui fișierului)
Putem folosi conceptele de gestionare a fișierelor pentru a tipări codul sursă al programului ca rezultat. Ideea este să afișați conținutul din același fișier în care scrieți codul sursă. Locația unui fișier de programare C este conținută într-o macro predefinită __FILE__.
Mai jos este programul C pentru a utiliza __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__ ); }
Ieșirea programului de mai sus este locația acestui fișier C.
Implementarea
Următorul program afișează conținutul acestui fișier C (codul sursă) deoarece __FILE__ conține locația acestui fișier C într-un șir.
2. Afișați programul
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 ; }
Ieșire:
Creați un test