打印字符串填充循环在C?
我是C新手,并试图了解打印字符串和数组的单个元素。
在主函数中,我创建了一个由5个字符组成的字符数组,并且能够打印字符串。 我也能够打印数组的一个元素。 这一切工作正常。
然后我创建了一个函数,它有一个for循环来填充一个有26个可用插槽的数组,并且想要做同样的事情,打印整个字符串,然后打印它的单个元素。
当我的程序执行时,它应该打印:你好o ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ(这应该打印两次,for循环一次,然后一次当我尝试打印字符串时)C
但是,当我尝试打印这些字符时,我遇到了错误,唯一的区别是我能看到的是我初始化数组的方式。 我不明白它们之间的差别以及它为什么会突破。 这与for循环的范围有关吗? 我也试着让char数组变成静态的,但那也不起作用。 有人能帮忙吗?
这是我的代码
我是C新手,并试图了解打印字符串和数组的单个元素。
在主函数中,我创建了一个由5个字符组成的字符数组,并且能够打印字符串。 我也能够打印数组的一个元素。 这一切工作正常。
然后我创建了一个函数,它有一个for循环来填充一个有26个可用插槽的数组,并且想要做同样的事情,打印整个字符串,然后打印它的单个元素。
当我的程序执行时,它应该打印:你好o 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%sn", s);
printf("%c", s[2]);
}
int main()
{
char mystr[5] = "Hello";
printf("%sn", mystr);
printf("%cn", mystr[4]);
mystring();
}
对于你的“字符串”没有null
终止符,我写“字符串”,因为它们实际上是根据c中字符串定义的非字符串。
您的i
变量始终为0
,只需使用一个简单的公式ch - 'A'
将提供正确的索引。
你的char mystr[5] = "hello";
没有足够的空间,您也需要为终止'