对于作业,我们需要输入简单的公式(如3*2
、4+10
、50/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修剪多余的空格。
最佳答案
尝试使用 %c
而不是 %s
。如果运算符始终是单个字符,并且运算符和操作数之间没有空格,那么这应该可行。
顺便问一下,您是否正在初始化 v
、m
和 o
以实际指向某物?这样做会好得多:
int v;
int m
char o;
int res = sscanf(buffer, "%d%c%d", &v, &o, &m);
正如我的“C 编程入门”教授曾经说过的:“C 很危险。练习安全的 C!”。
关于C、从输入中读取简单的公式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4215834/