我在C中制作一个程序,这是我的代码:
int main(int argc, char **argv) {
int n;
char aux[10];
sscanf(argv[1], "%[^-]", aux);
n = atoi(aux);
}
所以,如果我从命令行运行程序:my_program -23,我想得到数字" 23"将它隔离成一个整数变量,但这不起作用,我不知道为什么......
答案 0 :(得分:4)
您的sscanf
来电正试图读取字符串中第一个-
的内容(但不包括此内容)。由于-
(大概)是第一个字符,因此aux
最终为空。
您可以执行以下操作:sscanf(argv[1], "%*[-]%d", &n);
。这将跳过任何前导-
个字符,因此23
,-23
和--23
的参数都将被视为相同。如果您希望将--23
解释为-23
(只有一个前导短划线标记一个标记),那么您可以使用sscanf(argv[1], "-%d", &n);
(在这种情况下,仅使用23
在命令行上,转换将彻底失败。
答案 1 :(得分:2)
检查你的sscanf格式,我假设aux是一个整数?
来自http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/的sscanf(str,“%d”,& n);