首页 新闻 会员 周边

C程序输出问题

0
[已解决问题] 解决于 2011-11-22 08:18

为什么下面的程序如果输入多个{,没有任何响应呢?我的程序环境中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;

}

ttssrs的主页 ttssrs | 初学一级 | 园豆:82
提问于:2010-12-26 20:06
< >
分享
最佳答案
0

不知道你是不是Windows平台,Windows平台下,单独一行输入Ctrl+Z则成为一个EOF。getchar()是在你回车后才从缓冲区中依次读取你输入的字符。而#include <conio.h>后使用_getch()是直接返回的。

你的代码工作达到预期了呀:

上面的^Z就是Ctrl+Z

紫红的泪 | 菜鸟二级 |园豆:205 | 2010-12-26 21:45
谢谢,现在达到预期结果了。 可是为什么不能用EOF的值-1结束输入呢?
ttssrs | 园豆:82 (初学一级) | 2010-12-29 08:08
输入的都是字符,如果输入-1,则对应是ASCII字符'-'和'1','-'是45,'1'是49。以后有啥问题可以直接与我联系,我尽力帮助。
紫红的泪 | 园豆:205 (菜鸟二级) | 2010-12-29 11:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册