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;
}
这给出了输出:
文字:一些文字 xxxxxxxxxxxxxxxxxxxxx
btext:xxxxxxxxxxxxxxxxxxxxx一些文本
这让我发疯。代码很简单,但我看不懂。 是IDE的bug吗?有人见过这样的事情吗?
最佳答案
你永远不会以 NULL 结尾你的字符串。尝试:
Btext[sizeof(Btext)-1] = '\0';
在打印字符串之前。
关于c - 在 C 中的 char[] 上使用 printf(%s,...) 的神秘输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49970980/