c - 显示二维字符数组

标签 c

我在 C 语言中的字符串方面遇到了一个小问题。 我想声明 2D 字符数组并使用 2 个变量初始化它,如下所示:

typedef char tab[4];
tab str[2];
char st, nd;
str[0] = {st,nd,nd,nd,st};
str[1] = {nd,st,st,st,nd};

我的目标是像这样声明它以便能够根据我的需要进行初始化,但是当我想显示它时我的问题是:

for(i = 0;i < 2;i++)
    for(j = 0;j < 4;j++)
        printf("%c", str[i][j]);

但是不行!,我不知道问题出在哪里

最佳答案

char st, nd;
str[0] = {st,nd,nd,nd,st};
str[1] = {nd,st,st,st,nd};

您永远不会初始化stnd,因此它们的值是未定义的。因此,您使用未定义的值初始化数组,这些值可能不代表可打印字符。

此外,您超出了数组的一个维度。您已将其定义为具有四个元素,但使用五个元素对其进行初始化。

此时,程序的行为尚未定义,它可能会崩溃,可能会输出垃圾,或者根本什么都不做。要解决这个问题:

  1. 在使用 stnd 之前先初始化它们。
  2. 不要向 str 的第二个维度写入超过四个元素。

(并打开编译器警告!它可能会警告这两个问题。)

关于c - 显示二维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313235/

上一篇:c - 无法理解c链表

下一篇:总积点计算

相关文章:

c - 无法重新获取互斥量并在线程之间正确传递值

c - `N.0 == N && (int)N.0 == N` 是否为真,其中 `N` 是 int 范围内的整数文字?

c - linux c 获取系统日期格式yyyymmdd

c - 从程序中读取 JSON 输出,然后在 C 中解析 JSON

c - C语言的语义分析

c - 类似于 "extended"C 字符串库?

c++ - 正则表达式检测 typedef/class 关键字之后的任何内容?

c - 为什么我的代码从数组中打印出一些垃圾?

c - #error 需要证明一个真实的asm/page.h

我可以看到指向 NULL 指针的值吗?