c - 字符串中的垃圾字符

标签 c string loops character garbage

我已经编写了代码来制作一个角色的正确金字塔。

但是,当我执行程序时,金字塔的最后两行后面有垃圾字符,即使它超过了数组的大小时也是如此。

代码在这里:

#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();
}

垃圾字符从何而来?它仅在第三行之后出现。

最佳答案

您的代码中的问题是您没有以 \0(空)字符终止您的字符串。这是您的代码的练习:

#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)
    {
        array[x+1]='\0';
        printf("%s\n", array);
    }
x++;
}

getchar();
}

我不是专家,但我在许多典型的 C 书籍中读过以下内容: C中的int数组被初始化为0,而char数组被初始化为garbage。

是的,忘了说,它不是 dolla,它是 array

关于c - 字符串中的垃圾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220594/

相关文章:

ruby-on-rails - 无法在 Rails 中显示相关记录

c - 递归地反转C中的数组

python - python中将两个字符串组合成一个变量

javascript - 如何通过缓动增加 javascript 循环延迟

c++ - 让键盘进入休眠状态,直到按下特殊字符序列

c - C语言中如何重复字符串中的字符

c - 想知道如何通过 win32 应用程序中的程序在文件上写入任何内容

c - 求 k 素数的个数;

python - 从字符串中提取第一个和最后一个单词作为 pandas 中的新列

java - 如何打破在 while 循环中继续嵌套的 for 循环?