c中的字符串结尾

时间:2014-09-29 03:36:52

标签: c string

我必须做一个函数来检测表达式中'('和')'的数量是否相等。由于这是针对大学要求使用简单的链接列表与LIFO方法。 这是我的代码(它不完全是英文,如果这是我可以翻译的问题)

int balance (char * EXPRESION)

{
  int contador=0,flag=0,abre=0,cierra=0,devuelve=0;
  char fin='a',letra=0;
  nodo_t *H=NULL;


  printf ("HELLO\n");

  while (fin != '\0');
  {
    printf ("HELLOOOOOOOOO\n");
    fin = EXPRESION[contador];
    pila_push (&H,fin);
    contador++;
  }

  while (flag != 1)
  {
    flag = pila_pop (&H,&letra);

    if (flag != 1)
    {
      if (letra == '(')
      {
    abre++;
      }
      if (letra == ')')
      {
    cierra++;
      }
    }
  }

  if (abre==cierra)
  {
    devuelve=1;
  }
  else
  {
    devuelve=0;
  }

  return devuelve;
}

函数pila_push只是将一个节点添加到列表中,函数pila_pop是删除列表的第一个节点并返回读取的字符(当列表中没有节点时返回1)

由于表达式是一个字符串,我希望它以“\ 0”结束,但是当我执行程序时,它会在第一个时挂起而永远不会进入它。

非常感谢您的帮助。

这是我输入表达式来测试程序的方法:

int main (void)

{
  int aux=0;
  char expresion[10];

  printf ("Ingrese la expresion: ");
  __fpurge(stdin);
  scanf ("%s",expresion);

  aux = balance (expresion);

  if (aux == 1)
  {
    printf ("La expresion esta balanceada \n");
  }
  else
  {
    printf ("La expresion no esta balanceada \n");
  }

  return 0;
}

这是添加了两个printfs的程序输出:

Ingrese la expresion:abc 你好 (它挂在这里)

0 个答案:

没有答案