我對c編程有比較好的經驗。它一直是我最喜歡的語言之一。今天在研究shell編程時,我遇到了一個在我的Linux系統上執行的c程序(Backtrack 5 r2)。該程序有一個奇怪的輸出,我真的無法弄清楚。奇怪輸出的c程序
下面的代碼...
#include <stdio.h>
int main(int argc, char *argv[])
{
char array[] = { 0x25, 115, 0 };
char array2[] = { 68, 0x61, 118, 0x69, 0144, 040,
0107, 97, 0x74, 119, 0157, 0x6f,
100, 0x20, 0x72, 117, 'l', 0x65,
115, 041, 012, 0 };
printf(array, array2);
}
使用gcc和執行編譯的代碼得到的輸出作爲
大衛Gatwood規則!
無法真正瞭解如何以及爲什麼得到此輸出。據我所知,將一個數組的名稱傳遞給'printf'只需打印數組的基地址,即數組的第0個元素的地址。只有在'printf'語句中使用適當的格式說明符時,這也會被正確顯示。
那麼我錯在哪裏,或者我忽略了一些重要的東西,還是因爲gcc?
格式字符串,字符串。沒有什麼比 – 2013-03-02 07:57:23
格式字符串...?怎麼樣 ...??什麼是0x25,115,0 ??? – qre0ct 2013-03-02 07:58:00
0x25 =='%'...... – 2013-03-02 07:58:35