int main()
{
char btext[20];
for(int i=0; i< sizeof(btext); i++)
{
btext[i]= 'x' ;
}
for(int i=0; i< sizeof(btext); i++)
{
printf("%c", btext[i]);
}
printf("\nbtext: %s\n", btext);
return 0;
}
这给出了输出:
XXXXXXXXXXXXXXXXXXXX
btext:xxxxxxxxxxxxxxxxxxxx?
那是哪里?来自?更糟糕的是:
int main()
{
char text[] = "some text";
char btext[20];
printf("text: %s\n", text);
for(int i=0; i< sizeof(btext); i++)
{
btext[i]= 'x' ;
}
for(int i=0; i< sizeof(btext); i++)
{
printf("%c", btext[i]);
}
printf("\nbtext: %s\n", btext);
return 0;
}
这给出了输出:
文字:一些文字 XXXXXXXXXXXXXXXXXXXX
btext:xxxxxxxxxxxxxxxxxxxxsome text
这让我发疯。代码非常简单,但我无法弄清楚。 这是IDE中的错误吗?有没有人见过这样的东西?
答案 0 :(得分:1)
你永远不会NULL终止你的字符串。尝试:
Btext[sizeof(Btext)-1] = '\0';
在打印出来之前。