我无法将 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));