Я хочу сделать синтаксический анализатор и первый шаг, который я имею в виду, - извлечь целые числа и операторы из входной строки и сохранить их в своих соответствующих массивах. То, что я до сих пор это ...Как отделить целые числа и операторы от строки в c?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/* Grammar for simple arithmetic expression
E = E + T | E - T | T
T = T * F | T/F | F
F = (E)
Legend:
E -> expression
T -> term
F -> factor
*/
void reader(char *temp_0){
char *p = temp_0;
while(*p){
if (isdigit(*p)){
long val = strtol(p, &p, 10);
printf("%ld\n",val);
}else{
p++;
}
}
}
int main(){
char expr[20], temp_0[20];
printf("Type an arithmetic expression \n");
gets(expr);
strcpy(temp_0, expr);
reader(temp_0);
return 0;
}
Скажем, у меня есть вход «65 + 9 - 4», и я хочу, чтобы хранить целые числа 65, 9, 4 до целого массива и операторов + , - в массиве операторов, а также игнорирует пробелы на входе. Как я должен это делать?
P.S. Я использую код в моей функции чтения, который я получил здесь: How to extract numbers from string in c?
Каков ваш запрос (так как вы уже разделили цифры из строки, сделайте то же самое, чтобы извлечь операторы)? Также проверьте этот http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it-should-not-be -used на том, почему 'gets() является опасным' –
Какой у Вас вопрос? Возможно, вы забыли добавить «This is FYI» в конце: P – CinCout
Скажем, у меня есть вход «65 + 9 - 4», и я хочу сохранить целые числа 65, 9, 4 в целочисленный массив и операторы + , - в массиве. Спасибо за предупреждение о получении(). – Ingvaru