剛看了北大劉田老師講的遞迴定理,忍不住好奇心,用c語言實現了他講的自我複製機。
其中為了模擬圖靈機的可改變的輸入帶,我用了sprintf函式,使用字元陣列input來暫時儲存帶上的內容,方便改變。
這裡,轉義字元是乙個大坑,所以我用deal字元陣列,來解決轉義字元的問題。實際上input和deal陣列裡儲存的內容是相同的,只是由於轉義字元,兩者要進行乙個轉換,具體見transfer函式。
最終列印出來的,即c原始碼自身。
#include
char input[
100000];
char deal[
100000];
void
transfer()
else
if(input[i]
=='\"'
)else
if(input[i]
=='\\'
)else
if(input[i]
=='%'
)else
i++;}}
voida(
)else if(input[i]=='\\\\\\\"')else if(input[i]=='\\\\\\\\')else if(input[i]=='%%%%')elsei++;}}\\n\");a();transfer();printf(\"void a()\\n\",deal);printf(\"%%s\",input);return 0;}");
}int
main()
else if(input[i]=='\\\"')else if(input[i]=='\\\\')else if(input[i]=='%%')elsei++;}}\n");
a();
transfer()
;printf
("void a()\n"
,deal)
;printf
("%s"
,input)
;return0;
}
C語言實現檔案複製
使用c語言來複製乙個檔案 包括各種型別 主流的做法有2種 1.自定義函式 2.呼叫系統api 本文介紹自定義函式的方法。檔案型別可以粗略分類為ascii型別和二進位制型別,且大多數為二進位制型別,因此本文採用 fread 和 fwrite 閒話不多說,上 c語言實現檔案複製 srcfile 原始檔 ...
C語言實現批量複製檔案
假設你拿到乙個資料集,裡面包含很多的資料夾,每個資料夾下都有你想要複製的檔案。包括文字檔案和二進位制檔案 程式思路分為三步 1.製作乙份.txt檔案,每一行存放要複製檔案的路徑 2.製作乙份.txt檔案,每一行存放複製後檔案儲存的路徑 3.利用檔案複製函式進行複製 利用bat批處理命令 dir b ...
C語言實現簡易版掃雷
minesweeping define crt secure no warnings 1 ifndef game h define game h include include include include define row 10 define col 10 define rows row 2...