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

标签 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修剪多余的空格。

最佳答案

尝试使用 %c 而不是 %s。如果运算符始终是单个字符,并且运算符和操作数之间没有空格,那么这应该可行。

顺便问一下,您是否正在初始化 vmo 以实际指向某物?这样做会好得多:

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/

相关文章:

c - C 中的声明语句

c - 与 Pthread 共享有界缓冲区和互斥锁忙等待

powershell - 自动完成用户输入 PowerShell 2.0

java - 空字符 (\u0000) 如何在字符串中结束?

c - "static char"与 C 中的 "char"

arrays - C - 将元素保存到数组

c - fread 在c中用随机字符填充字符串

c - 在 fork() 进程中没有父进程的 Action 会发生什么?

java - 为什么每次都要连续两次要求用户输入?

c - 在 C 中使用 strtok/sscanf 进行字符串操作