社区
C语言
帖子详情
用 cin 输入数据是为什么不够强壮????
metero
2003-01-07 01:41:27
#include <iostream>
#include <conio.h>
void main()
{
int i;
for(;;)
{
cin >> i ;
cout << i << endl;
}
getch();
}
为什么不能输入第二个数据?
为什么在输入字符时不能退出?
...全文
52
37
打赏
收藏
用 cin 输入数据是为什么不够强壮????
#include #include void main() { int i; for(;;) { cin >> i ; cout << i << endl; } getch(); } 为什么不能输入第二个数据? 为什么在输入字符时不能退出?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
37 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JoshuaLi
2003-03-03
打赏
举报
回复
该问题已经结贴
// cin 面向(又是这个单词)单词,用cin.getline()
ao
2003-01-19
打赏
举报
回复
问题都解决了,怎么还不结贴啊??
softworm163
2003-01-16
打赏
举报
回复
这个问题我在C++ PRIMER PLUS里看过,
它还深入不少东东,
可惜半月没看了,忘了
ao
2003-01-16
打赏
举报
回复
同意菜鸟叽叽!
Firstbyte
2003-01-16
打赏
举报
回复
这个问题......
SwordMan2001
2003-01-16
打赏
举报
回复
要健壮,就要以复杂来换取,试试把cin>>i那一句改为
while(! (cin>>i)){
cin.seekg(0, ios::beg);
cin.clear();
cout<<"Input error, please input again:";
}
sea_lover
2003-01-15
打赏
举报
回复
你的错误前面的兄弟说的已经很清楚了,不再说了!
for(;1;)这样一定行!
-------------------------------------------
【◇SeaLover◆〗
/ \
★---CSDN---☆
\ /
【○Trust Me●〗
thememory
2003-01-15
打赏
举报
回复
#include <iostream>
using namespace std;
int main()
{
int i;
while(1)
{
cin >> i;
if(!cin)break;
cout << i << endl;
}
return 0;
}
try this
rushman
2003-01-15
打赏
举报
回复
可以这样
cin.clear();//一般这样做比较可靠。
cin.ignore(n,'\n');/忽略n个字符,直到'\n',当然也可以不是'\n'
metero
2003-01-15
打赏
举报
回复
谢谢rushman(一线天)。
我始终想找出方法来避免这个问题。
alan118
2003-01-09
打赏
举报
回复
studying
danceflash
2003-01-09
打赏
举报
回复
To: metero(天不赋我唯有勤)
用"scanf()"实现的输入模块:
#include <stdio.h>
void main()
{
int i; //待输入整数
int in; //scanf()函数返回值记录
/***************** Begin ************************/
do{
in = scanf( "%d", &i ); //scanf()函数读入失败时返回0
if( in == 0 ) //若返回值为0,表示读入失败
getchar(); //读入失败则用getchar()函数清除缓冲区(每次只能清除一个字符)
}while( in == 0 ); //读入失败就循环读入
/***************** End ***********************/
printf( "i = %d\n", i );
}
不好意思,模块有点儿长,又懒得优化了,嘿嘿~~~
danceflash
2003-01-09
打赏
举报
回复
To: metero(天不赋我唯有勤)
昨天晚上没来,关于cin的用法我没有研究过,这两天也没有时间了
只能给你一个"scanf()"的输入模块,保证可以使用,使我以前编程的时候用的,你拿去试试看^_^
luixui
2003-01-09
打赏
举报
回复
郁闷
metero
2003-01-09
打赏
举报
回复
怎么样做呢?
你的程序是在什么环境下运行通过的?
metero
2003-01-09
打赏
举报
回复
非常感谢chinajiji(菜鸟叽叽) !
但问题还是一样。
如果我输入一个字符,比如说"A",然后,它就不断地输出cout << "wrong input format! input again:" << endl;
我在BC3.1下运行的。
rushman
2003-01-09
打赏
举报
回复
所以说实践出真知 :)
metero
2003-01-09
打赏
举报
回复
这个在书上可没有说。
metero
2003-01-09
打赏
举报
回复
如果这样的话,倒不如用scanf 了。
rushman
2003-01-09
打赏
举报
回复
首先,用fflush来清除cin/cout的缓冲区是不可取的。因为无法确定cin/cout是否是通过stdin/stdout文件句柄来进行操作的。
对于你的问题,可以肯定是因为输入缓冲区的问题。输入的回车'\n'始终不会被读出。可以这样
char c;
cin.clear();
do{
cin.get(c);
while(c > '\n');
即可。
但是还是建议你不要用cin来输入数字(整数/浮点都会有问题),你可以先读取一整行,在从其中得到需要的数据:
char buf[MAX_LINE];
int i;
cin.get(buf,sizeof(buf) - 1,'\n');//也可以用其他字符表示输入结束
//另外,用fgets也可以,不过回车'\n'它不会帮你删掉。
sscanf(buf,"%d",&i);//用istrstream也可以,方法很多,都不会有什么问题
加载更多回复(17)
数据
结构入门----顺序表的基本操作
通过该实验,深入理解顺序表的逻辑结构、物理结构等概念,掌握顺序表基本操作的编程实现,注意顺序表插入、删除等操作过程中
数据
元素的移动现象,培养学生编写程序时,要考虑程序的
强壮
性,熟练掌握通过函数参数返回...
数据
结构期末复习(十套试卷)库题
数据
结构期末复习(十套试卷)库题
第一个实验 集合的交、并差
通过该实验,深入理解顺序表的逻辑结构、物理结构等概念,掌握顺序表基本操作的编程实现,注意顺序表插入、删除等操作过程中
数据
元素的移动现象,培养学生编写程序时,要考虑程序的
强壮
性,熟练掌握通过函数参数返回...
数据
结构实验—基于二叉排序树的商品信息查询算法的设计与实现
查找表是
数据
处理的重要操作, 试建立有100个结点的二叉排序树进行查找,然后用原
数据
建立AVL树, 并比较两者的平均查找长度。 【基本要求】 (1)以链表作为存储结构,实现二叉排序树的建立、查找和删除。 (2)...
【理解】
数据
结构实验题
数据
结构练习题 实验1 多个数的求和、平均、最大值、最小值 题目:通过键盘
输入
整数,直到遇到一个负数为止,该负数不考虑在内,求所输整数的合、平均值、最大值和最小值,并在屏幕上输出。 #include<iostream&...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章