如何检测 char* 参数中的撇号?

How to detect apostrophe in a char* argument?

我有一个 c 文件,我可以这样传递参数:

./cfile [-size number]

例如

./cfile -size 22

这是此类文件的示例代码:

int main(int argc, char** argv) {
     if (argv[1] != "-size") {
          fprintf(stderr, "Wrong format");
          return 1;
     }
     // get_number is some function that returns int value of number if number, NULL otherwise
     if (get_number(argv[2]) == NULL) {
          fprintf(stderr, "Wrong format");
          return 1;
     }
     return 0;
}
     

然而,当我写

./cfile '-size' '22'

我找不到让 C 确定撇号不应该存在的方法。 由于每个参数上的撇号,我想抛出一个错误,但 c 似乎将它们视为不存在。

有什么办法吗?

引号由 shell 解释以分隔参数。它们甚至在您的程序看到它们之前就被删除了。

因此您的程序只会看到 argv[1]-size,而不是 '-size'

另外,比较字符串时,需要使用strcmp。使用 !=== 来比较字符串实际上是在比较指针值,这不是您想要的。