C - 如何梳理输入(方程)并抓取变量,而不考虑空格?(scanf()), (arrays).



对于我的C程序,用户输入"aY + b = c",其中a,b和c是整数值,Y是"符号常量"。

如何使"aY+b=c"和"aY + b = C"一样工作?基本上,我不确定如何使用scanf(),以便无论用户决定输入多少空格,我都可以从用户输入中获取变量a,b和c。

谢谢!

请考虑以下事项:

法典

#include <stdio.h>
#include <ctype.h>
#define MAX_EQUATION_LEN (1000)
int main(void)
{
    char equation[MAX_EQUATION_LEN];
    int num, i;
    printf("Enter a equation: ");
    fgets(equation, MAX_EQUATION_LEN, stdin);
    sscanf(equation, "%d", &num);
    i = 0;
    while(equation[i])
    {
        if(!isdigit(equation[i]))
            break;
        else
            i++;
    }
    printf("You entered: %dn", num);
    printf("Unhandled string data: %sn", &equation[i]);
    return 0;
}

示例运行

输入公式:204Y + 52 = 9
您输入:204
未处理的字符串数据:Y + 52 = 9

逻辑

  1. 一次将完整的等式作为字符串放入。
  2. 相应地分析字符串。 在这里,我正在寻找第一个int.
  3. 跟踪您在字符串解析过程中所处的位置。
  4. 继续解析字符串,直到没有更多字符。

不确定如何使用scanf(),以便无论用户决定输入多少空格,我都可以从用户输入中获取变量a,b和c。

首先不要使用 scanf。你需要编写一个词法分析器和一个解析器,所以写一个词法分析器和一个解析器

最新更新