我是StackOverflow的新手,我有一个简单的问题。
我正在编写一个接受字符串和数字的程序。
我使用fgets
来处理字符串部分。
摘要(如果您想了解问题的更多要点,请查看之前的修改):
根据Simone的建议,这是我到目前为止所做的:
int value = -1;
int check = sscanf(command, "%i%c", &value, dummy);
if (check == 1) {
sscanf(command, "%d" , &command_value);
sum = sum + command_value;
printf("Sum is now %d\n", sum);
}
else if (check == 2) {
printf("Command unrecognized.\n");
}
现在的问题是它确实打印了总和,但是它也打印出“命令无法识别”。我想我再次弄乱了语法。
答案 0 :(得分:4)
看看sscanf()
,它应该可以解决问题。
请参阅http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/。
修改强>
由于输入值如“12e”会有sscanf()
返回12,您可以尝试这样的事情:
char dummy[1];
int value = -1;
int retv = sscanf(input_string, "%i%c", &value, dummy);
if (retv == 1) {
// input_string is a number
}
else if (retv == 2) {
// input_string is a number followed by some gibberish
}
答案 1 :(得分:1)
您(编辑)问题中的这一点非常重要:
“我不知道如何告诉它,当用户输入一些数字(例如12)时,它会将其置于运行总计中。如果用户输入”12e“或其他内容,则输入将是忽略。“
sscanf的替代方法是使用strtol()检查输入是否在数字后结束...
char *end;
static int running_total = 0; // static if you want a running total over repeated calls of this function...
[...]
command_value = strtol(command, end, 0);
if (end && (end != command) && *end == '\n')
running_total += command_value;
答案 2 :(得分:0)
获得总计 -
int runningTotal = 0;
.............
// Your number input arrived
runningTotal = runningTotal + your_number_input