我正在尝试将字符串与argv参数进行比较。
我的主要内容是:
int main(int argc, char *argv[])
现在,如果我写
if (argv[2] == 'squared')
IDE告诉我,我有一个多字符常量,或者char *对于它的类型或类似的东西来说太长了。
有没有办法将argv与字符串进行比较?我甚至使用过strcmp,但在程序运行时会给我一个分段错误。
我也尝试了一个for循环并增加了argv [i],但这也给了我一个错误。
也许我错过了什么?
答案 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
}