繁体   English   中英

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

[英]how to use character arrays in strcmp() functions

当我将任何字符输入到字符数组时,我初始化了一个大小为4的字符数组

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它将读取那些未初始化的字节。 这样做会调用未定义的行为 ,在这种情况下,这表明没有打印任何内容。

在这种特殊情况下可能发生的情况是,数组的第一个元素(即索引为0的元素)可能为0。此值用于终止字符串,因此a被视为空字符串。

也:

数组的第一个字符是z

不它不是。 C中的数组从索引0开始,而不是索引1。

如果要将字符串复制到数组中,请使用strcpy

strcpy(a, "z");

在此代码段中

char a[4];
a[0]='z';
a[1]='y';
printf("The character array is %s\n", a);

该数组不包含字符串(以零字符结尾的字符序列)。 但是,您尝试使用转换说明符%s将其输出为字符串。

相反,你应该写

printf("The character array is %*.*s\n", 2, 2, a);

在此代码段中

char a[4];
a[0]='z';
a[1]='y';
printf("The first character of the array is %c\n", a[0]);
printf("The second character of the array is %c\n", a[1]);

同样,数组不包含字符串。 但是,您将输出单独的字符。 因此没有问题。

如果要将字符串存储在数组中,则应在字符串后附加零个字符。 例如

char a[4];
a[0]='z';
a[1]='y';
a[2] = '\0';
printf("The character array is %s\n", a);

标准的C字符串函数strcmp处理字符串。 因此,要与此函数一起使用的数组应包含字符串。

否则,您可以使用另一个标准函数memcmp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM