【发布时间】:2017-09-09 14:14:37
【问题描述】:
我是 C 新手,正在尝试学习打印字符串和数组的单个元素。
在主函数中,我创建了一个包含 5 个字符的 char 数组,并且能够打印字符串。我还可以打印数组的 1 个元素。这一切都很好。
然后我创建了一个函数,它有一个 for 循环来填充一个具有 26 个可用插槽的数组,并且想要做同样的事情,打印整个字符串,然后只打印它的单个元素。
当我的程序执行时,它应该打印: 你好 ○ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ (这应该打印两次,一次用于 for 循环,然后一次当我尝试打印字符串时) C
但是,当我这次尝试打印字符时,我遇到了错误,我能看到的唯一区别是我初始化数组的方式。我不明白其中的区别以及它为什么会破裂。它与 for 循环的范围有关吗?我也尝试将 char 数组设为静态,但这也不起作用。 有人可以帮忙吗?
这是我的代码
我是 C 新手,正在尝试学习打印字符串和数组的单个元素。
在主函数中,我创建了一个包含 5 个字符的 char 数组,并且能够打印字符串。我还可以打印数组的 1 个元素。这一切都很好。
然后我创建了一个函数,它有一个 for 循环来填充一个具有 26 个可用插槽的数组,并且想要做同样的事情,打印整个字符串,然后只打印它的单个元素。
当我的程序执行时,它应该打印: 你好 ○ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ (这应该打印两次,一次用于 for 循环,然后一次当我尝试打印字符串时) C
但是,当我这次尝试打印字符时,我遇到了错误,我能看到的唯一区别是我初始化数组的方式。我不明白其中的区别以及它为什么会破裂。它与 for 循环的范围有关吗?我也尝试将 char 数组设为静态,但这也不起作用。 有人可以帮忙吗?
void mystring()
{
char s[26];
for(char ch = 'A'; ch < 'Z'; ch++)
{
int i = 0;
s[i] = ch;
printf("%c", s[i]);
i++;
}
printf("\n%s\n", s);
printf("%c", s[2]);
}
int main()
{
char mystr[5] = "Hello";
printf("%s\n", mystr);
printf("%c\n", mystr[4]);
mystring();
}
【问题讨论】:
-
你遇到了什么错误?
-
int i = 0;这个范围可能是错误的