主函数的参数,无法理解!

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。 :-)

以上是关于主函数的参数,无法理解!的主要内容,如果未能解决你的问题,请参考以下文章

4.6指针变量作参数

在c语言中子函数引用主函数中的值和引用主函数某个值的地址的区别

如何创建一个主函数需要引用参数的线程?

callback回调与node爬虫技术

js函数相关

js函数相关