[英]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.