c - printf 输出垃圾而不是特定字符

标签 c memory printf

嗯,我在使用 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?

最佳答案

因为 C 字符串需要以 NUL 终止。这意味着您的字符串的最后一个字符必须是 '\0'。这就是 printf(以及所有其他 C 字符串函数)知道字符串何时结束的方式。

关于c - printf 输出垃圾而不是特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13567969/

相关文章:

c - Chez Scheme 中的 FFI,用于具有可变参数的 C 函数(varargs)

c - 字符赋值期间存储的值

c - 最轻的像素

C:检查数组的一个元素是否等于另一个元素

c - for循环中的顺序是什么?

c - C 版和 Fortran90 : optimization for filling subarrays before MPI_Gather

linux - 自定义内存分配器 - 段错误

c - 使用 printf() 时 Spi 中断处理程序起作用

c++ - 为什么此代码会出现段错误

c程序可以 `uint8_t`指向一个大小为32位的地址