代码之家  ›  专栏  ›  技术社区  ›  Yanick Rochon

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

  •  1
  • Yanick Rochon  · 技术社区  · 14 年前

    对于家庭作业,我们需要输入简单的公式(例如 3*2 , 4+10 , 50/16 等),并仅使用加法、减法和位移位计算结果(和rest)。无论如何,我可以使用三个后续的输入读数,但是我想我可以尝试使用 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 一无所有( 等于声明的位置和时间的任何值)

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

    注意 :我正在使用 a trim function 去修剪多余的空间。

    3 回复  |  直到 8 年前
        1
  •  2
  •   Dima    14 年前

    尝试 %c 而不是 %s . 如果运算符始终是单个字符,并且运算符和操作数之间没有空格,则此操作应该有效。

    顺便问一下,你正在初始化 v , m ,和 o 指的是什么?最好这样做:

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

    正如我的“C语言编程入门”教授常说的:“C语言是危险的。练习安全C!”.

        2
  •  1
  •   Vovanium    14 年前

    你可以用 %[-+*/] (使用一组运算符)为了确保运算符字符串只获取运算符字符。

        3
  •  0
  •   nmichaels    14 年前

    因为没有多余的空格,而且运算符都是一个字符长,所以可以使用 %c 填写 o .