我在 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};
您永远不会初始化st
或nd
,因此它们的值是未定义的。因此,您使用未定义的值初始化数组,这些值可能不代表可打印字符。
此外,您超出了数组的一个维度。您已将其定义为具有四个元素,但使用五个元素对其进行初始化。
此时,程序的行为尚未定义,它可能会崩溃,可能会输出垃圾,或者根本什么都不做。要解决这个问题:
- 在使用
st
和nd
之前先初始化它们。 - 不要向
str
的第二个维度写入超过四个元素。
(并打开编译器警告!它可能会警告这两个问题。)
关于c - 显示二维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313235/