我正在尝试从给定的字符数组中解析出数学方程,例如 char equation[255] = "4+4";
我想将第一个数字复制到 long number1
,运算符为 char oper
第二个数字为long number2
。
我已经尝试过sscanf(equation, "%d%c%d", &number1, &oper, &number2);
但它只获取第一个数字,无法提取运算符和第二个数字。
尝试过这个方法:
while (isdigit(equation[k]))
{
k++;
}
oper = equation[k];
但仍然没有得到运算符(operator)的帮助。有没有更简单的方法来解析 C++ 中的方程?
最佳答案
将其变成 MCVE ...
#include <stdio.h>
int main()
{
char * equation = "4+4";
long number1, number2;
char oper;
int rc = sscanf( equation, "%d%c%d", &number1, &oper, &number2 );
printf( "%d\n", rc );
if ( rc == 3 )
{
printf( "%d - %c - %d\n", number1, oper, number2 );
}
return 0;
}
...给出...
3
4 - + - 4
按预期工作。 投票结束问题,请阅读我在答案开头给出的链接。
另外:
- How to read / parse input in C? ,部分:
- 请勿将 *scanf() 用于可能格式错误的输入
- 当 *scanf() 未按预期工作时(如果您的输入字符串包含空格)
如果您确实想要使用 C++(如您的原始标签所示),则 Boost.Spirit满足您的解析需求。
关于Char 数组到数学方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36029983/