|
> 恐ろしく簡単なのですが、一応機能は果たすと思います。
> 本当は、[aa(bb]cc) 等の場合も考えなくてはならないと思いますが?
[aa) の場合、「カッコがおかしい」と出ませんが、機能を果たすと言えるのでしょうか?
さて、こんなのを書いてみましたが、参考になりますかどうか。
#include <stdio.h>
#include <string.h>
const char *bp;
int check(char e)
{
char c, *p; static char l[] = "([{", r[] = ")]}";
while ((c = *bp) != '\0') {
bp++;
if (strchr(r, c)) return c == e;
if ((p = strchr(l, c)) != NULL && !check(r[p-l])) return 0;
}
return e == 0;
}
int main(void)
{
char P[100]; int rval;
printf("文字列を入力してください。\n");
scanf("%99s", P);
bp = P;
rval = check(0);
if (rval == 1)
printf("括弧の列はかみ合います。 \n", P);
else
printf("括弧の列はかみ合いません。 \n", P);
return 0;
}
|