Получение одного символа и передача его функции в C - PullRequest
2 голосов
/ 24 апреля 2011

Я новичок в C и немного на этом сайте.Нас попросили сбалансировать символы с помощью стеков в C. У меня есть функция push и pop, которая добавляет и удаляет символы для балансировки, соответственно.Всякий раз, когда строка содержит символ {, (, [или <, она помещает одиночный символ в стек. Иначе, он выталкивает его. Если в конце всего процесса стек пуст, это означает, что введенная строка сбалансирована.</p>

if(string[i] == '(' || string[i] == '{' || string[i] == '[' || string[i] == '<')
     push(string[i], s);
else
     pop(s);

Однако, когда я его просматриваю, терминал печатает цифры вместо нажатых символов. Вот моя функция просмотра:

int i;
for(i = 0; i < (s->tos + 1); i++)
    printf("%d ", s->arr[i]);

Ответы [ 2 ]

2 голосов
/ 24 апреля 2011

Вы хотите, чтобы printf печатал символ, а не десятичный символ

, т. Е.

printf("%c ", s->arr[i]);
1 голос
/ 24 апреля 2011

Флаг формата "% d" предназначен для целых чисел.Вот почему вы видите целые числа.

Чтобы увидеть символы, используйте флаг формата "% c", который предназначен для символов:

int i;
for (i = 0; i < (s->tos + 1); i++)
    printf("%c ", s->arr[i]);

См. документацию .

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