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
在最后以某种方式指定,以便将字符用作字符串,但我找不到方法。
原因是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)