Обработка символьных данных - C (СИ) (70156)
Формулировка задачи:
Здравствуйте мне нужна помощь, у меня есть код для выполнения моей задачи смысл задачи в том чтобы считать выражения допустим 256+789-785(работает со знаками +-), но в нем нужно прописать условие при котором если знаки будут повторяться то программа должна прописать ошибку допустим если будет так 23++++98 должна быть ошибка, я не могу понять как прописать это условие помогите разобраться пожалуйста. Язык Си. Вот код.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
char str[] = "3+4 + 5 +9 +0+ 132 + 537 - 99 +54";
int lv = 0, rv = 0, n = 0, op = 0;
char* ptr = str;
sscanf(ptr, "%d%n", &lv, &n);
ptr += n;
while(*ptr) {
while(isspace(*ptr))
ptr++;
sscanf(ptr, "%c%n", &op, &n);
ptr += n;
sscanf(ptr, "%d%n", &rv, &n);
ptr += n;
switch(op) {
case '+':
lv += rv;
break;
case '-':
lv -= rv;
break;
default:
ptr++;
}
printf("lv: %d rv: %d\n", lv, rv);
}
printf("lv: %d\n", lv);
return 0;
}Решение задачи: «Обработка символьных данных»
textual
Листинг программы
char c;
sscanf(ptr, "%c", &c);
if (c == op) {
fprintf(stderr, "Error\n");
return 1;
}
Объяснение кода листинга программы
- Вводится переменная типа char c;
- С помощью функции sscanf происходит чтение символа из указателя ptr и сохранение его в переменной c;
- Производится сравнение значения переменной c с символом op;
- Если c равно op, то выводится сообщение об ошибке
Errorв стандартный поток ошибок stderr и функция возвращает 1; - Если c не равно op, то ничего не происходит и функция продолжает работу.