c - 如何在 strcmp() 函数中使用字符数组

标签 c arrays character

我初始化了一个大小为四的字符数组 当我将任何字符作为

输入到字符数组时
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/

相关文章:

javascript - 如何从字符串中获取奇数和偶数位置的字符?

c - 已定义但未用于整个项目的变量

C 结构内部 union 内部结构

php - 具有 SORT_NUMBERIC 行为的 array_unique

java - 检查 int 是否位于数组中的两个项目之间

php - 使用Google PHP API客户端响应的特殊字符

c++ - c中的指针是普通变量还是比这个多

C 使用系统调用逐字节写入文件

java - 在 Java 中,Long 被视为数组中的 int

c - 使用sscanf从c中的字符串中提取