请问这个循环失败的原因是哪?

Amitt 2005-06-10 06:13:08
#include <stdio.h>
int main()
{
char c='y';
while(c=='y')
{
printf("continue?\n") ;
c=getchar();
}
return 0;
}

目的是当执行完循环体内的代码后通过用户按下的键来判断是否再执行一次。
以上代码却无法做到?!原因出在哪?
...全文
62 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amitt 2005-06-10
  • 打赏
  • 举报
回复
还是不行哦!
怎么回事?
改成getch()以后按y再按回车还是照样退出
就按回车却没有反应啊!
Amitt 2005-06-10
  • 打赏
  • 举报
回复
谢谢各位。
但刚才不小心没有设置分数。所以只能平均给各位各5分!
真不好意思!
MagicCarmack 2005-06-10
  • 打赏
  • 举报
回复
楼上的各位都说了
「已注销」 2005-06-10
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <conio.h>
int main()
{
char c='y';
while(c=='y')
{
printf("continue?\n") ;
c=getch();
}
return 0;
}
-------------
这个才是你想要的功能。。
「已注销」 2005-06-10
  • 打赏
  • 举报
回复
楼主可以看看这个。。
#include <stdio.h>

void main( void )
{
char buffer[81];
int i, ch;

printf( "Enter a line: " );

/* Read in single line from "stdin": */
for( i = 0; (i < 80) && ((ch = getchar()) != EOF)
&& (ch != '\n'); i++ )
buffer[i] = (char)ch;

/* Terminate string with null character: */
buffer[i] = '\0';
printf( "%s\n", buffer );
}
-----------------
输入 abldkfkdfkfdkfd
就会输入同样的字符。。这是怎么回事。。因为getchar会检测是否到了字符串的尾巴(EOF)
----------------
Each of these functions returns the character read. To indicate an read error or end-of-file condition, getc and getchar return EOF

--------------------
要不出现那种情况。可以#include <conio.h>

用c = getch();
「已注销」 2005-06-10
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
char c='y';
while(c=='y')
{
printf("continue?\n") ;
c=getchar();
}
return 0;
}
-----------
说说我的看法。。主要因为在执行c=getchar();的时候。。由于输入y后有了换行(LF)。。
程序会记录这些输入。。当下一下执行到这里的时候。。程序就把LF个读进去了。。所以。。就跳了出去。。你可以调试跟踪一下。。可以发现c的值为10。。就是LF了。。
你也可以测试一下。。在第一次输入时候。。输入yo。。然后回车。。同样会出现这种情况。。这个时候c为‘o’。。。呵呵。。就是因为getchar把键盘输入存进了一个buffer。。
lbing7 2005-06-10
  • 打赏
  • 举报
回复
c=getchar();

........................
上面那个需要回车
改成

#include <conio.h>

c = getch();/*试试*/

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧