2012-05-05 46 views

回答

7

strcmp返回0,如果C字符串被比较是相等的。 0 == false,所以它实际上工作。

+0

if(argc == 2 && strcmp(argv [1],“id”))我使用它像 ai.exe id 但是这段代码没有得到执行。 – Ren

+2

'if(argc == 2 &&!strcmp(argv [1],“id”))' –

+1

您是否真的看过我的回答?你做的恰恰相反。 – mfontanini

2

strcmp返回0,如果2个字符串是equal

提示:避免阵列出结合的例外的(段错误)使用此:

if (argv < 2) return 0; 
0

这将是比较容易通过仅仅输出的argv开始[1]:

cout << argv[1] << endl; 

然后你可以看到你在argv [1]上获得的价值,并从那里获得。你的代码没有问题,所以我猜测你没有正确配置你的IDE来传递正确的argv [1]参数。

正如上面评论,你应该得到0,而不是一个虚假的,但。

+0

那么事情是,我通过“ID”并将其与“ID”进行比较,argv [1] ==“ID”为假。使用strcmp()它会返回0(现在很好),但是一个代码块不会像第一个答案的注释中所述那样得到执行。 – Ren

+0

使用C,“id”返回指向字符串“i”的“char *”。 'argv [1]'是另一个'char *'。所以'argv [1] ==“id”'比较两个字符串指针,而不是它们指向的字符串。这就是为什么它返回false。 – craigmj