2013-01-17 55 views
0

當我爲我的iOS Xcode項目使用靜態C++庫時,我遇到了printf和Xcode LLDB調試器的奇怪行爲,有時我的打印結果printf("%s", char*)是char與數字級聯或垃圾字符。附加的圖像本身就說明了一切。任何想法?printf在打印字符時出現奇怪的行爲--LLDB調試器

enter image description here

+2

您的代碼的文本複製和粘貼將更容易閱讀和使用。 –

回答

2

似乎按預期方式工作。 %s需要以NUL結尾的字符串,即給定char*,打印任何內容,直到第一個'\0'。如果您希望陣列適用於%s,則必須分配5個字節並指定a[4]=0;

+0

*任何*行爲將「如預期」。如果給'printf(「%s」,blah)「一個指向非NUL終止的數組的指針,行爲是不確定的。 –

+0

明白了,謝謝! –

0

的字符數組a需要用'\0'被終止,如果你與一個%s格式說明打印出來:

char * a = new char[5]; 

a[0] = 'i'; 
a[1] = 'p'; 
a[2] = 'o'; 
a[3] = 'd'; 
a[4] = '\0'; 

printf("word: %s\n", a);