我对以下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