该标志在 c 命令参数中是否被视为字符串?

该标志在 c 命令参数中是否被视为字符串?

说我有以下内容:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
    if (argv[1] == "-s") {
        printf("success\n");
    }
    else{
        printf("failed\n");
    }

return 0;
}

在 shell 中,当我运行它打印的可执行文件时failed..

答案1

这是因为您无法在 C 中使用==or进行字符串比较!=,因为它们比较基地址,而不是实际内容。要正确比较 C 中的字符串,您必须使用strcmp.

答案2

简短的回答是,是的。

你最大的错误是你应该使用STRCMP或者STRNCMP正确比较 C 中的字符串。

奖励积分:循环argv[]并使用printf显示每个元素来亲自查看什么被放置在哪里。

相关内容