【发布时间】:2015-01-28 23:57:17
【问题描述】:
我已经编写了代码来制作一个正确的金字塔。
但是,当我执行程序时,金字塔的最后两行即使超出了数组的大小,也会在它们之后放置垃圾字符。
代码在这里:
#include <stdio.h>
#include <string.h>
#define ROW 5
int main(void) {
char array[ROW];
int x = 0;
int row = 0;
for (row = 0; row < ROW; row++) {
array[x] = 'a';
if (x < ROW) {
printf("%s\n", dolla);
}
x++;
}
getchar();
}
垃圾字符是从哪里来的?它只在第三行之后。
【问题讨论】:
-
尝试在调试器中逐行执行程序。密切关注
array[x] = 'a'; -
你需要空终止它。
-
什么是
dolla?我没有看到它在任何地方定义。 -
char array[ROW+1] = {0};会帮到你很多。您可能会认为array是空的,但它充满了随机字符。通过使用{0}进行初始化,数组以所有 zeo 开始。 -
是的,我也没有在任何地方看到dolla声明,无论如何,我建议你写
for(row = 0; row < ROW; row++, x++)而不是在for块内写x++。
标签: c string loops character garbage