Чтение строки происходит неправильно - PullRequest
0 голосов
/ 15 октября 2010

Эй, ребята, я работаю над программой, которая получает выражение postfix и вычисляет его ..

У меня есть две функции:

  1. Преобразует инфикс в постфикс
  2. Рассчитать постфикс

Когда я пытаюсь использовать небольшие выражения, такие как 1 + 1 или (1 + 1) * 1, все работает нормально но когда я использую все операнды, я получаю что-то неприятное,

Вот пример: 2 * 2/2 + 1-1 получает что-то вроде: 222 / * 11- + T_CHECKÖÐ7? █Ã

Если вы видите, выражение верно до 'T'

Я полагаю, что это какая-то ошибка параметра, поэтому я поставлю здесь заголовок и верну значения

1)

char* convert(char *infix);
char *post = (char *)malloc(sizeof(char)*tamP);
return post;

2)

int evaluate(char *postfix)
while (*postfix != '\0')
return result;

Caller)

char* post = convert(infix);
result = evaluate(post);

Спасибо

Ответы [ 2 ]

4 голосов
/ 15 октября 2010

Такая странная строка больше похожа на ошибку переполнения буфера.Вы, вероятно, перезаписываете нулевой терминатор, поэтому, когда строка печатается (или используется позже), она продолжает работать до тех пор, пока не найдет ее, исследуя случайную память программы, пока не доберется до нее.

Проверьте, что вся ваша строкаманипуляции верны.

1 голос
/ 15 октября 2010

Возможно, вы не добавляете символ '\ 0' в конце 'post' (после последнего разумного символа) в функции convert (char *).Это одна из причин, по которой я могу думать.Попробуйте установить полную строку в '\ 0', прежде чем что-либо делать с ней:

memset(post, 0, tamP);

должно сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...