تختلف طباعة الكود المصدري لبرنامج C نفسه عن مشكلة Quine. نحتاج هنا إلى تعديل أي برنامج بلغة C بطريقة تمكنه من طباعة الكود المصدري بالكامل.
موصى به: يرجى تجربة النهج الخاص بك {يذهب} أولاً قبل الانتقال إلى الحل.
يقترب
- استخدم الماكرو المحدد مسبقًا __FILE__ للحصول على موقع الملف.
- افتح ملف التعليمات البرمجية المصدر في وضع القراءة واحصل على مؤشر الملف fptr. تحقق مما إذا تم فتح الملف بنجاح أم لا.
- اقرأ كافة محتويات الملف باستخدام حلقة do-while وfgetc.
- أغلق الملف باستخدام الدالة fclose.
1. طريقة ماكرو الملف (اسم ملف الطباعة)
يمكننا استخدام مفاهيم معالجة الملفات لطباعة الكود المصدري للبرنامج كمخرجات. الفكرة هي عرض المحتوى من نفس الملف الذي تكتب فيه الكود المصدري. يوجد موقع ملف برمجة C داخل ماكرو محدد مسبقًا __FILE__.
يوجد أدناه برنامج C لاستخدام __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__); }
إخراج البرنامج أعلاه هو موقع ملف C هذا.

تطبيق
يعرض البرنامج التالي محتوى ملف C هذا (الكود المصدري) لأن __FILE__ يحتوي على موقع ملف C هذا في سلسلة.
2. عرض البرنامج
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; }
الإخراج:
إنشاء اختبار