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

输入读取问题求教

fengzhao33 发布于 2012-11-26 15:19, 386 次点击
    char aa[20];
    cout<<"输入:";
    int i=0;
    while(cin>>aa[i])
    {
        if(aa[i]=='\0')
            break;
        else
            i++;
    }
    cout<<aa;
回车之后无输出
7 回复
#2
lz10919149992012-11-26 15:28
'\0'你输了吗?你知道'\0'怎么输吗?我也不知道。
#3
mmmmmmmmmmmm2012-11-26 15:30
楼主 你这样写 试试
char aa[20];
    cout<<"输入:";
    cin>>aa;
    cout<<aa;
#4
fengzhao332012-11-26 15:51
回复 2楼 lz1091914999
比如输入了5个字符,那么回车以后字符组里后半部全是'\0'?还是说里面根本没有值啊?回车符也会添到字符组吗?如果按照楼下直接读取整个字符串,回车符是不是就不会读到字符组里了?但那样后面是不是自动赋值为空吗?
#5
fengzhao332012-11-26 15:52
回复 3楼 mmmmmmmmmmmm
直接读取整个字符数组的话可以,但是和一个一个读有什么区别吗?为什么我那个一个一个的读不行啊。。
#6
lz10919149992012-11-26 16:24
回复 4楼 fengzhao33
回车之后是'\n',不是'\0'
#7
xh13225793292012-11-26 16:48
回复 5楼 fengzhao33
你的while是死循环,没有\0这个字符在键盘上输入的,是永远不会退出这个循环,在你定义一个静态数组而又没有初始化的话,未初始化字符是会显示乱码的,你的这个while一直就没退出去过,你一直输入字,数组一直增加,超过了还是可以输入的,你打断点试试,如果是数组的首地址aa做cin>>aa的话你在回车的时候只是简单地对字符数组的某些元素赋值,是不会影响进行下一步输出的
#8
fengzhao332012-11-26 17:11
回复 7楼 xh1322579329
懂了,膜拜膜拜。。。
1