主函数的参数,无法理解!
Posted
技术标签:
【中文标题】主函数的参数,无法理解!【英文标题】:Main function's arguments, cant understand this! 【发布时间】:2011-04-13 18:01:47 【问题描述】:当我给出参数 print 时,为什么我的代码会返回“Not a valid command”?
int main(int argc, char *argv[])
printf("Argument 2 er %s\n", argv[1]);
if(argv[1] == "print")
printf("Print kommando kalt");
else if(argv[1] == "random")
printf("Random kommando kalt");
else if(argv[1] == "replace")
printf("Replace kommando kalt");
else if(argv[1] == "remove")
printf("Remove kommando kalt");
else if(argv[1] == "len")
printf("øem kommando kalt");
else
printf("Ingen gyldig kommando\n");
【问题讨论】:
【参考方案1】:您无法使用 ==
比较 C 字符串。这仅进行指针比较。您需要改用strcmp
:
if (strcmp(argv[1], "print") == 0) …
【讨论】:
【参考方案2】:因为你不能像 C 那样比较字符串。
你需要使用:
if(strcmp(argv[1], "print") == 0)
printf("Print kommando kalt\n");
等等。
另外,请确保您不要访问argv[1]
,除非它确实存在且有效;如果您的程序在没有参数的情况下被调用,它将为 NULL。您可以使用argc
的值来确定您有多少个参数。
【讨论】:
@Oli:argv[argc]
(main 开头的值)被标准保证为 NULL【参考方案3】:
因为argv[1]
是char*
:类似于 0xDEADBEEF
而“print”的行为就好像它是 another char*
: 类似于 0xBADF00D
和 0xDEADBEEF != 0xBADF00D
你想使用strcmp()
(http://linux.die.net/man/3/strcmp)
【讨论】:
哈...为 DEADBEEF 参考 +1 如果您使用了 0xDECAFBAD,我会给它一个 +1。 :-)以上是关于主函数的参数,无法理解!的主要内容,如果未能解决你的问题,请参考以下文章