C,从输入中读取简单的公式字符串

时间:2010-11-18 14:32:34

标签: c user-input scanf

对于家庭作业,我们需要输入简单的公式(例如3*24+1050/16等)并仅使用加法,减法来计算结果(和休息)和位移。无论如何,我可以使用三个后续输入读数,但我想我会尝试使用fgets()sscanf()一次性获取公式。这就是我所拥有的:

int *v;  // value (left side)
int *m;  // modifier (right side)
char *o; // operant

int res = sscanf(buffer,"%d%s%d",v,o,m);

但很自然,这不起作用,因为o获取字符串的所有剩余部分,而m没有任何内容(m等于声明的地点和时间的任何值)

现在,实现这个目标的正确方法是什么?

注意:我正在使用a trim function修剪额外的空格。

3 个答案:

答案 0 :(得分:2)

尝试使用%c代替%s。如果运算符始终是单个字符,并且运算符和操作数之间没有空格,则这应该有效。

顺便说一句,您是否正在初始化vmo以实际指向某些内容?这样做会好得多:

int v;
int m
char o;

int res = sscanf(buffer, "%d%c%d", &v, &o, &m);

正如我的“C语言编程简介”教授曾经说过:“C很危险。练习安全C!”。

答案 1 :(得分:1)

您可以使用%[-+*/](使用您的运算符集)来确保该运算符字符串仅获取运算符字符。

答案 2 :(得分:0)

由于您没有多余的空格且运算符都是一个字符长,您可以使用%c填写o