为什么下面的程序如果输入多个{,没有任何响应呢?我的程序环境中EOF值为-1
/*
**检查一个程序的花括号对。
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
int braces;
braces = 0;
//printf("%d\n",EOF);
/*
**逐字符读取程序。
*/
while( (ch = getchar()) != EOF)
{
/*
**左花括号始终是合法的。
*/
if( ch == '{' )
braces += 1;
/*
**右花括号只有当它和一个左花括号匹配时才是合法的。
*/
if( ch == '}' )
if( braces == 0 )
printf( "Extra closing brace!\n");
else
braces -=1;
}
/*
**没有更多输入:验证不存在任何未被匹配的左花括号。
*/
if(braces > 0 )
printf("%d unmatched opening brace(s)!\n",braces);
return EXIT_SUCCESS;
}
不知道你是不是Windows平台,Windows平台下,单独一行输入Ctrl+Z则成为一个EOF。getchar()是在你回车后才从缓冲区中依次读取你输入的字符。而#include <conio.h>后使用_getch()是直接返回的。
你的代码工作达到预期了呀:
上面的^Z就是Ctrl+Z