Se o código da função bemFormada opera a pilha diretamente, faz mais sentido tratar pilha e t como variáveis locais:
#define N 100 // Esta função devolve 1 se a string s contém uma // sequência bem-formada de parênteses e colchetes // e devolve 0 se a sequência é malformada. int bemFormada (char s[]) { char pilha[N]; int t; int i; t = 0; for (i = 0; s[i] != '\0'; ++i) { // pilha[0..t-1] é uma pilha de '(' e '[' switch (s[i]) { case ')': if (t == 0) return 0; if (pilha[--t] != '(') return 0; break; case ']': if (t == 0) return 0; if (pilha[--t] != '[') return 0; break; default: pilha[t++] = s[i]; } } return t == 0; }