งานคือพิมพ์โปรแกรม C เองออกมา (Self-replicating program / Quine)
ใช้ระบบไฟล์ใน C อ่านเนื้อหาไฟล์ที่กำลังเขียนโค้ดอยู่ เช่นเขียนใน "code1.c" เปิดไฟล์โหมดอ่าน อ่านทั้งหมด พิมพ์ผลลัพธ์
แต่ต้องรู้ชื่อไฟล์ก่อน ใช้ macro __FILE__ ซึ่งคืนค่า path ของไฟล์ปัจจุบัน
ตัวอย่าง macro __FILE__
#include <stdio.h>
int main() {
printf("%s", __FILE__);
}
โปรแกรมนี้จะพิมพ์ path ของไฟล์ต้นฉบับ
อัลกอริทึม
Start
Step 1: ใน int main()
ประกาศตัวแปร char c
เปิด FILE "file" = __FILE__ โหมด "r"
Loop do-while c != EOF
c = fgetc(file)
putchar(c)
ปิดไฟล์
Stop
ตัวอย่างโค้ด
#include <stdio.h>
int main(void) {
char c;
FILE *file = fopen(__FILE__, "r");
do {
c = fgetc(file);
putchar(c);
} while (c != EOF);
fclose(file);
return 0;
}
เอาต์พุต
#include <stdio.h>
int main(void) {
char c;
FILE *file = fopen(__FILE__, "r");
do {
c = fgetc(file);
putchar(c);
} while (c != EOF);
fclose(file);
return 0;
}