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