如何检测 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
。使用 !=
或 ==
来比较字符串实际上是在比较指针值,这不是您想要的。
我有一个 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
。使用 !=
或 ==
来比较字符串实际上是在比较指针值,这不是您想要的。