我對以下C代碼有點問題。如果我註釋掉「線24」然後我會得到下面的輸出:
aaaaaaaaaaaaaaaaaaaaaaaaa
,如果我不評論,我會得到如下:??
aaaaaaaaaaaaaaaaaaaaaaaaadƔLƔLƔF ?W'F'W'F'W'F'W'F'W'F'W'F'W'
有人可以告訴我爲什麼嗎?
我使用Mac OS X 10.5.4和gcc
printf導致輸出問題
void test(char* a , char* b);
int main()
{
char * str = "aaaaaaaaaaaaaaaaaaaaaaaaa";
char* str2 = malloc(4*sizeof(str));
test(str , str2);
return 0;
}
void test(char* a , char* b)
{
int i = 0;
printf("\n########\n");
for(i = 0 ; i < strlen(a) ; i++)
{
printf("%d" , i); /******** LINE 24 ********/
b[i] = a[i];
}
printf("\n########\n");
for(i = 0 ; i < strlen(b) ; i++)
{
printf("%c" ,*(b+i));
}
printf("\n########\n");
}
感謝您回覆。
如果你不給它一個0結尾的字符串,你認爲'strlen(b)'應該返回什麼? – 2013-12-11 16:11:59