我无法将字符作为字符串访问

Hug*_*anc 2 c string char strcmp

我有以下代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式编译和启动:

$ gcc main.c -o main
$ ./main a
98
Run Code Online (Sandbox Code Playgroud)

的结果strcmp是 98,所以值不一样。当我替换&values[0]通过"a"在代码中,我看到,他们是相同的(strcmp输出等于0)。

那么有没有办法values[0]作为字符串访问?我想我需要\0在最后以某种方式指定,以便将字符用作字符串,但我找不到方法。

Apl*_*123 5

原因是values[0]后面没有空字节,因此您最终会"abcde"与进行比较"a",这不是您想要的。您可以改为分配一个具有空字节的两个字符数组:

char mystr[2] = {values[0]}; // rest of the array is zeroed (null bytes)
printf("%d\n", strcmp(mystr, argv[1]));
Run Code Online (Sandbox Code Playgroud)