|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何使編譯後的程序運行時將源程序原樣打印出來
如何使編譯後的程序運行時將源程序原樣打印出來 |
如何使編譯後的程序運行時將源程序原樣打印出來
用宏??
是不是腦筋急轉彎? |
如何使編譯後的程序運行時將源程序原樣打印出來
不是的,是一個競賽題目 |
如何使編譯後的程序運行時將源程序原樣打印出來
那麼源程序在不在硬盤裡,
還是只有可執行程序,沒有源程序。
如果源程序存在,倒可是打印出來。 |
如何使編譯後的程序運行時將源程序原樣打印出來
[code]char s[] ={
10, 10, 105, 110, 116, 10, 109, 97, 105, 110, 32, 40, 41, 123, 10, 9, 105, 110, 116, 32, 105, 59, 10, 10, 9, 112, 117, 116, 115, 32, 40, 34, 99, 104, 97, 114, 32, 115, 91, 93, 32, 61, 123, 34, 41, 59, 10, 9, 102, 111, 114, 32, 40, 105, 61, 48, 59, 32, 115, 91, 105, 93, 59, 32, 105, 43, 43, 41, 10, 9, 9, 112, 114, 105, 110, 116, 102, 32, 40, 34, 37, 100, 44, 32, 34, 44, 32, 115, 91, 105, 93, 41, 59, 10, 9, 112, 114, 105, 110, 116, 102, 32, 40, 34, 48, 125, 59, 34, 41, 59, 10, 9, 112, 117, 116, 115, 32, 40, 115, 41, 59, 10, 125, 0};
int
main (){
int i;
puts ("char s[] ={");
for (i=0; s[i]; i++)
printf ("%d, ", s[i]);
printf ("0};");
puts (s);
}
[/code] |
如何使編譯後的程序運行時將源程序原樣打印出來
[code]
#include <stdio.h>;
#define BUFSZ 4096
main()
{
int f, r;
char b[BUFSZ];
if ( ( f = open( __FILE__, O_RDONLY ) ) >;= 0 ) {
while ( ( r = read( f, b, BUFSZ ) ) >; 0 )
fwrite( b, r, 1, stdout );
close( f );
}
}
[/code] |
如何使編譯後的程序運行時將源程序原樣打印出來
很明顯,FH的代碼很高明! |
如何使編譯後的程序運行時將源程序原樣打印出來
兩位老大,能不能解釋一下,畢竟這裡新手多 |
如何使編譯後的程序運行時將源程序原樣打印出來
第一個程序,把數組裡面的數字對應成ascii碼看看是什麼東東。
第二個程序,把當然可執行程序的源文件從硬盤讀出輸出到屏幕。 |
如何使編譯後的程序運行時將源程序原樣打印出來
| 如何使編譯後的程序運行時將源程序原樣打印出來
那個__FILE__是什麼意思??
//usr/include/stdio.h
/usr/include/sys/stat.h
/usr/include/sys/types.h
/usr/inlcude/fcntl.h
都沒找到
# grep "__FILE__" /usr/include/stdio.h /usr/include/fcntl.h /usr/include/sys/stat.h /usr/include/sys/types.h
還有頭文件應該是上面的幾個。 |
如何使編譯後的程序運行時將源程序原樣打印出來
-->
這是一個宏,代表的是這個可執行文件的源文件名。
自己寫個小程序試一試。 |
如何使編譯後的程序運行時將源程序原樣打印出來
[code]
#include <stdio.h>;
#include <fcntl.h>;
#include <sys/types.h>;
#include <sys/stat.h>;
int
main(void)
{
printf("%s\n",__FILE__);
return(0);
}
[/code]
有個疑問,這個程序的通用性怎麼樣?用的編譯器少,對這些瞭解不多。 |
如何使編譯後的程序運行時將源程序原樣打印出來
好像基本上都支持。 |
如何使編譯後的程序運行時將源程序原樣打印出來
__FILE__,收到!! |
如何使編譯後的程序運行時將源程序原樣打印出來
| 如何使編譯後的程序運行時將源程序原樣打印出來
呵呵,我這裡也有一個
[code]
#include <iostream.h>;
void main() {char s1[]="#include <iostream.h>; void main() {char s1[]=";
char s2[]="s1[21]=10; cout<<s1<<char(34); s1[21]=32; cout<<s1<<char(34)<<char(59)<<endl; cout<< char[] s2= ; cout<<char(34)<<s2<<char(34)<<char(59)<<endl; s2[77]=10; s2[84]=34; s2[95]=34; cout<<s2;}";
s1[21]=10; cout<<s1<<char(34); s1[21]=32; cout<<s1<<char(34)<<char(59)<<endl;
cout<<"char[] s2="; cout<<char(34)<<s2<<char(34)<<char(59)<<endl; s2[77]=10; s2[84]=34; s2[95]=34; cout<<s2;}
[/code] |
如何使編譯後的程序運行時將源程序原樣打印出來
[quote="henryouly"][/quote]-->-->
你為什麼要斷行呢?一口氣寫到底多好啊。 |
| |