所以我在学校接到了一项作业,要 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/