在C中运行总计

时间:2011-02-16 09:34:30

标签: c

我是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");
}           

现在的问题是它确实打印了总和,但是它也打印出“命令无法识别”。我想我再次弄乱了语法。

3 个答案:

答案 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