Друк вихідного коду самої програми на Сі

Друк вихідного коду самої програми на Сі

Друк вихідного коду самої програми на C відрізняється від проблеми Quine. Тут нам потрібно змінити будь-яку програму на C таким чином, щоб вона друкувала весь вихідний код. 

Рекомендовано: спробуйте свій підхід {іде} перш ніж переходити до вирішення.

Підхід

  1. Використовуйте попередньо визначений макрос __FILE__, щоб отримати розташування файлу.
  2. Відкрийте файл вихідного коду в режимі читання та отримайте покажчик файлу fptr. Перевірте, чи успішно відкритий файл чи ні.
  3. Прочитайте весь вміст файлу за допомогою циклу do-while і fgetc.
  4. Закрийте файл за допомогою функції fclose.

1. Метод макросу FILE (друк імені файлу)

Ми можемо використовувати концепції обробки файлів, щоб вивести вихідний код програми. Ідея полягає в тому, щоб відобразити вміст із того самого файлу, у якому ви пишете вихідний код. Розташування файлу програмування 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. 

Результат програми 1

Реалізація

Наступна програма відображає вміст цього конкретного файлу 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  ;   }   

Вихід:

Створіть вікторину