我有一个根据定义的规则接受特定字符串的程序,即数字运算符号。例如:2+4-5*9/8
上面的字符串是可以接受的。现在,当我输入类似的内容时2+4-a
,它再次显示可以接受,这是完全不可接受的,因为根据定义的规则,数字值的范围应仅在 0 到 9 之间。我想我将不得不使用 ASCII 值来检查。
参考下面的代码:
#include <iostream>
#include <ncurses.h>
#include <string.h>
#include <curses.h>
int check(int stvalue) {
if(stvalue < 9) return(1);
else return(0);
}
main() {
int flag = 0;
char str[10];
std::cout << "Enter the string:";
std::cin >> str;
int i = 1;
int n = strlen(str);
for(i = 0; i < n - 1; i += 2) {
if(!check(str[i])) {
if(str[i + 1] == '+' || str[i + 1] == '-' || str[i + 1] == '/' || str[i + 1] == '*') flag = 1;
else {
flag = 0;
break;
}
}
}
if(flag == 1) std::cout << "String is acceptable" << std::endl;
else std::cout << "String is not acceptable\n" << std::endl;
getch();
}
输出:
Enter the string:2+4-5
String is acceptable
Enter the string:3*5--8
String is not acceptable
Enter the string:3+5/a
String is acceptable
最后的输出不应该是可接受的。