开发者

Comparing command parameter with argv[] is not working

开发者 https://www.devze.com 2023-01-09 05:26 出处:网络
I am trying to compare the parameter of command with argv[] but it\'s not working. H开发者_C百科ere is my code.

I am trying to compare the parameter of command with argv[] but it's not working. H开发者_C百科ere is my code.

./a.out -d 1

In main function

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

if (argv[1] == "-d")

    // call some function here

}

But this is not working... I don't know why this comparison is not working.


You can't compare strings using ==. Instead, use strcmp.

#include <string.h>

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

if (strcmp(argv[1], "-d") == 0)

// call some function here

}

The reason for this is that the value of "..." is a pointer representing the location of the first character in the string, with the rest of the characters after it. When you specify "-d" in your code, it makes a whole new string in memory. Since the location of the new string and argv[1] aren't the same, == will return 0.


In C++ let std::string do the work for you:

#include <string>
int main (int argc, char * const argv[]) {

if (argv[1] == std::string("-d"))

// call some function here

}

In C you'll have to use strcmp:

if (strcmp(argv[1], "-d") == 0)

// call some function here

}


You may want to use strcmp here.


won't that be:

if (argv[0] == "-d")

0 not 1?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号