我无法将 char 作为字符串访问
I can't access a char as a string
我有以下代码:
#include <stdio.h>
#include <stdlib.h>
char values[] = {"abcde"};
int main(int argc, char *argv[])
{
printf("%d\n", strcmp(&values[0], argv[1]));
return EXIT_SUCCESS;
}
我是这样编译启动的:
$ gcc main.c -o main
$ ./main a
98
strcmp
的结果是98,所以数值不一样。当我在代码中将 &values[0]
替换为 "a"
时,我发现它们是相同的(strcmp
输出等于 0)。
那么有没有办法将 values[0]
作为字符串访问?我想我需要以某种方式在末尾指定 [=17=]
以便将 char 用作字符串,但我找不到方法。
原因是 values[0]
后面没有空字节,所以你最终将 "abcde"
与 "a"
进行比较,这不是你想要的。您可以改为分配一个具有空字节的两个字符数组:
char mystr[2] = {values[0]}; // rest of the array is zeroed (null bytes)
printf("%d\n", strcmp(mystr, argv[1]));
无需复制 values[0]
(如 建议的那样)或修改 values
,您可以使用 strncmp
指定最多只比较一个字符:
printf("%d\n", strncmp(values, argv[1], 1));
我有以下代码:
#include <stdio.h>
#include <stdlib.h>
char values[] = {"abcde"};
int main(int argc, char *argv[])
{
printf("%d\n", strcmp(&values[0], argv[1]));
return EXIT_SUCCESS;
}
我是这样编译启动的:
$ gcc main.c -o main
$ ./main a
98
strcmp
的结果是98,所以数值不一样。当我在代码中将 &values[0]
替换为 "a"
时,我发现它们是相同的(strcmp
输出等于 0)。
那么有没有办法将 values[0]
作为字符串访问?我想我需要以某种方式在末尾指定 [=17=]
以便将 char 用作字符串,但我找不到方法。
原因是 values[0]
后面没有空字节,所以你最终将 "abcde"
与 "a"
进行比较,这不是你想要的。您可以改为分配一个具有空字节的两个字符数组:
char mystr[2] = {values[0]}; // rest of the array is zeroed (null bytes)
printf("%d\n", strcmp(mystr, argv[1]));
无需复制 values[0]
(如 values
,您可以使用 strncmp
指定最多只比较一个字符:
printf("%d\n", strncmp(values, argv[1], 1));