注册 登录
编程论坛 C++教室

请教~怎么用回车结束循环?

cqcqcqcq555 发布于 2009-07-29 18:02, 4102 次点击
我想用循环读入一串字符,以回车结束循环,需要怎么做呢?
我是这么想的,但好像不对……
for (i=0;i<12,ch[i]!=10;i++)
{
   cin>>ch[i];
   ch[i+1]=getchar();
}
8 回复
#2
黯然神伤2009-07-29 22:32
for (i=0;i<12,ch[i]!=10;i++)
{
   cin>>ch[i];
   if(ch[i]=='0d')
   break;

}
#3
cqcqcqcq5552009-07-29 22:42
……我直接说吧,主要的问题是它把第偶数个字符拿去判断去了没有加入数组中,导致在第奇数个字符时不是判断而是输入所以出错
#4
织田长政2009-08-03 21:11
没看出来。。。。
#5
sadan201112009-08-03 23:39
回复 2楼 黯然神伤
cin>>ch[i];
      ch[i+1]=getchar();

cin>>ch[i];
你输入回车以后,‘\n’留在缓冲区,然后立马被getchar();得到,清空...,楼主是这个意思吗?
#6
my28853902009-08-07 13:39
应该是无条件循环吧
#7
zqsf2009-08-07 14:40
我是这样写的:
#include <iostream>
#include<conio.h>
using namespace std;
 
void main()
{
    int i;
    char ch[12];
    for (i=0;i<12;i++)
    {
        ch[i]=_getche();
        if(ch[i]=='\r')break;
    }  
    ch[i]='\0';
    cout<<'\n'<<ch;
}
不知道这个符不符合你的要求
一:原程序中的for (i=0;i<12,ch[i]!=10;i++),我想你是不是想判断for (i=0;i<12&&ch[i]!=10;i++)
二:getchar采用的是行缓冲,只有你在按了回车后才读取一个字符,我换成了getche(),这个函数采用字符缓冲,并具有回显
三:我在运行时发现不能判断ch[i]=='\n',因为发生了字符转换,换行符变成了回车换行,所以我判断ch[i]=='\r'
四:为了保证读取后ch为字符串,所以最后把'\r'换成了'\0'
#8
pokemonzj2009-08-07 18:10
回复 楼主 cqcqcqcq555

按下Ctrl+Z,再按回车enter两下即可结束循环。
楼主可试一下。
#9
平凡不在2009-08-08 17:29
回复
我觉的用break,然后判断一下就好了
1