C 语言计算器 - 限制输入值

标签 c calculator

所以我在学校接到了一项作业,要 build 一个计算器。 该程序应包含一个“parcer.c”文件,其中所有不允许的输入都被整理出来,如果提交了任何不允许的值和输入,它应该给您返回“语法错误”消息。

我已经完成了,只剩下一件事了,就是这个,一个 if 应该检查并确保 sizeof (op) 不大于 1,这意味着它只能包含1 个符号(+、-、、/、%) 但我的问题是我仍然可以写; 4 +sdf 5 得到结果 = 9 但我不能写 4sdf 5 或 4 sdf 5,因为这样我会得到“语法错误”,这是正确的。

当我在操作符后面遇到垃圾时,我应该怎么做才能给我同样的错误? 例如:4 +sdf 5

if(sizeof (*op) > 1 || !validOperator(op))
    {
        //Returns statuscode 2 and a "Syntax Error" if the operator 

          is consisting of more than 1 sign

        printf("\n Syntax Error, only +, -, x, /, %% are allowed\n");
        return 2;
    }

最佳答案

我假设 op 定义为

char *op; /*or maybe as char op[]*/

当您使用 sizeof(*op) 检查时,您会检查字符数组中第一个元素的大小,即它将始终返回 1。

您想使用 strlen() 而不是 sizeof()。尝试以下更改:

if( op!=0 && (strlen(*op) > 1 || !validOperator(op)) )

关于C 语言计算器 - 限制输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34078871/

相关文章:

c - 为什么我的 C Yacc/lex 计算器无法正确解析?

javascript - 将跨度值推送到数组

python - Python中的'//'运算符没有返回正确的解决方法

c - 这段代码,它工作正常并返回我想要的,但它在打印之前挂起了吗?

c++ - SDL - 音频回调函数有时没有及时调用

C语言,如何求二维数组中一个单词的长度?

c# - 如何防止 C# 计算器中出现双位小数

C:下标值既不是数组也不是指针

python - 生成代码以与不需要重新编译的正在运行的 cpp 应用程序交互的好方法是什么?

java - 无法解析符号 'listener'