scanf_s函数,就是因为多了一个*,我有些

用scanf键盘输入1.2*-1.8执行后a=1.3,op=*,c=-1.8

用c++写这个程序

我需要解答,我会谢谢你的帮助

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你都在说些啥啊,scanf_s语句咋写的,贴出来

我去 你这是想做字符串解析了 这个思路可以用 字符串查找,切割之后进行解析,针对你这个解析简单,但是复杂的运算符解析就复杂了。
你应该定义一个字符串,存储sacnf输入的字符串,然后字符串其实就是1.2*-1.8,对这个字符串进行解析了,解析这个简单,先查找*的位置,切割,再去取前后。
但是如果涉及过多的加减乘除运算符,就比较复杂了。

这是一个字符串处理的题,主要就是根据特定字符对字符进行切割处理逻辑。
提供一个简单样例 可以参考扩展

img

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    
    float a = 1.2;
    float c = -1.8;
    char op = '*';
    if (op == '*')
    {
        printf("%.2f \n",(double) a * c);
    }


    char test[20];
    memset(test, 0, 20);
    scanf_s("%s", test, 20);
    printf("输入的字符串为:%s \n", test);
    //接下来就是按照你的逻辑对字符串进行处理了
    char temp[10] = { 0 };
    int j = 0;
    for (int i = 0; i < strlen(test); i++)
    {
        if (test[i] != '*')
        {
            temp[j] = test[i];
            j++;
        }

        if (test[i] == '*')
        {
            a = atof(temp);
            memset(temp, 0, 10);
            j = 0;
            op = '*';
        }
        //这里可以有 + - /对op进行赋值
    }
    c = atof(temp);
    printf("%.2f  %c  %.2f", a, op, c);
    return 0;
}