我对printf()
的问题很奇怪。它在屏幕上输出垃圾。我想这与记忆有关。看看:
char string1[] = "SAMPLE STRING";
char string2[20]; // some garbage in it
/* let's clear this madness*/
int i = 0;
for (i; i < 20; i++) string2[i] = ' '; // Space, why not.
printf("output: %s", string2);
输出
output: ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠SAMPLE STRING
// ten spaces and random characters, why?
答案 0 :(得分:8)
因为C字符串需要以NULL结尾。这意味着字符串的最后一个字符必须是'\0'
。这就是printf
(以及所有其他C字符串函数)知道字符串何时完成的方式。
答案 1 :(得分:2)
使用空字符string2
'\0'
string2[19] = '\0';
或者你可以这样做:
for (i; i < 19; i++) string2[i] = ' ';
string2[i] = '\0'; // after the end of the loop i= 19 here