如何在C中将char字符串与argv进行比较?

时间:2012-02-08 16:04:28

标签: c

我正在尝试将字符串与argv参数进行比较。

我的主要内容是:

int main(int argc, char *argv[]) 

现在,如果我写

if (argv[2] == 'squared') 

IDE告诉我,我有一个多字符常量,或者char *对于它的类型或类似的东西来说太长了。

有没有办法将argv与字符串进行比较?我甚至使用过strcmp,但在程序运行时会给我一个分段错误。

我也尝试了一个for循环并增加了argv [i],但这也给了我一个错误。

也许我错过了什么?

5 个答案:

答案 0 :(得分:6)

使用strcmp和实际字符串,而不是多字符常量。

strcmp(argv[2], "squared") == 0

答案 1 :(得分:3)

尝试strcmp(3)。 在您的情况下,您必须使用strcmp(argv[2], "squared"); 查看this手册页以获取更多信息。

答案 2 :(得分:2)

您可以使用strcmp

if(strcmp(argv[2], "squared") == 0)  /* returns true if argv[2] is "squared" */

答案 3 :(得分:1)

strcmp() / * strncmp()*是要走的路。并确保您的字符串以空值终止;)

答案 4 :(得分:1)

C中的单引号仅用于单个字符,而不是字符串。所以你要为一个角色写'a',为字符串写'hello world'。

“a”和“a”之间存在差异 - “a”末尾有一个零终止符,因此它实际上是一个双字符串。这很重要,因为你必须记住,char数组需要比你存储在它们中的字符串长一个字符。

要比较字符串,请使用strcmp,如下所示:

if (strcmp(argv[2], "squared") == 0)
{
    //they are equal
}