getchar从输入中吃掉第一个字符

时间:2018-10-30 01:45:48

标签: c

我正在尝试制作一个检查括号是否平衡的程序。您输入n个要检查的字符串,然后转到下面的函数。第一次通过有效,但是当我在第二个字符串上进行测试时,它会吃掉第一个字符,并说它不平衡。然后在第三次尝试中再次起作用。我不知道怎么了。

struct Stack* pStack = (Stack*) hStack;
Boolean result = FALSE;
char c, left;

c = getchar();
while ((c=getchar()) != EOF && c != '\n')
{
  if (c == '{' || c == '(' || c == '[')
  {
    push(pStack, c);
  }
  if (c == '}' || c == ')' || c == ']')
  {
    if(isEmpty(hStack)==TRUE)
    {
      result = FALSE;
      return result;
    }
    else
    {
      left = pop(pStack);
      printf("left: %c, c: %c\n", left, c);
      if ( c == '}' && left == '{') {
        result = TRUE;
      }
      else if (c == ')' && left == '(') {  
        result = TRUE;
      }
      else if (c == ']' && left == '[') {
        result = TRUE;
      }
      else {
        result = FALSE;
      }   
    }
    }
    return result;

0 个答案:

没有答案