当前位置: 代码迷 >> C语言 >> 敢说你会编程,谁能找到此程序的错误能当大师.
  详细解决方案

敢说你会编程,谁能找到此程序的错误能当大师.

热度:147   发布时间:2006-04-26 23:12:00.0
敢说你会编程,谁能找到此程序的错误能当大师.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char ca;

fflush(stdin);
ca = getchar();
while (ca == ' ' || ca == '\t' || ca == '\n') // 只有输入此3个字符才执行循环
{
putchar(ca);
ca = getchar();
}
printf("\n");

system("pause");
return 0;
}

搜索更多相关的解决方案: 大师  getchar  include  pause  

----------------解决方案--------------------------------------------------------

莫非是这样?
[CODE]
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char ca;

fflush(stdin);
ca = getchar();
while (ca == ' ' || ca == '\t' || ca == '\n')
{
putchar(ca);
fflush(stdin);
ca = getchar();
}
printf("\n");

system("pause");
return 0;
}

[/CODE]


----------------解决方案--------------------------------------------------------
不对,问题的根源不对,此程序我也是昨天才发现,原来我一直都是错了,上面的也能运行,但按照现在的ANSIC就是错的
----------------解决方案--------------------------------------------------------

还是我告诉你们把getchar()函数返回char类型就是错的,标准应该是int类型,在这里能正确运行,但到了其他地方就要出问题了,特别是EOF是-1时


----------------解决方案--------------------------------------------------------

退格键无法输入。难道因为这个?

我加的那个fflush(stdin);也是对的,不然也达不到目的
不然每次不管你输入什么,回车之后,缓冲区的\n 又给了ca


----------------解决方案--------------------------------------------------------
以下是引用论坛在2006-4-26 23:33:00的发言:

还是我告诉你们把getchar()函数返回char类型就是错的,标准应该是int类型,在这里能正确运行,但到了其他地方就要出问题了,特别是EOF是-1时

你错了 ASC Ⅱ 表中的字符 都是常量,可以当int 看待


----------------解决方案--------------------------------------------------------

当然'\N'循环啊


----------------解决方案--------------------------------------------------------
以下是引用论坛在2006-4-26 23:38:00的发言:

当然'\N'循环啊

狡辩嘛这不,你输入时当然希望系统得到你输入的字符,当你没输入\n 时 它却得到了\n 这就不对


----------------解决方案--------------------------------------------------------
ch = getchar() 这个错误的确隐蔽,在GCC4.0下没有任何警告或错误~但是的确又可以顺利达到目的

----------------解决方案--------------------------------------------------------

那些字符 就是常量,可以当整数用,个人觉得没什么


----------------解决方案--------------------------------------------------------
  相关解决方案