我初始化了一个大小为四的字符数组 当我将任何字符作为
输入到字符数组时char a[4];
a[1]='z';
printf("The character array is %s\n", a);
输出显示我
字符数组为
但后来我改变了一点
char a[4];
a[1]='z';
printf("The first character of the array is %s\n", a[1]);
输出显示我
数组的第一个字符是z
这是为什么呢?我如何使用我的字符数组,例如我希望使用 strcmp() 函数比较它们。 请帮助我....
最佳答案
在第一段代码中,您只设置了数组的一个元素。其他三个元素未初始化。因此,当您调用 printf
并传入 a
时,它会读取那些未初始化的字节。这样做会调用 undefined behavior ,在本例中表现为未打印任何内容。
在这种特殊情况下可能发生的情况是数组的第一个元素,即索引为 0 的元素,可能为 0。该值用于终止字符串,因此 a
被视为一个空字符串。
还有:
The first character of the array is z
不,不是。 C 中的数组从索引 0 开始,而不是索引 1。
如果要将字符串复制到数组中,请使用strcpy
:
strcpy(a, "z");
关于c - 如何在 strcmp() 函数中使用字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47914168/