求助:关于输入非法字符后cin的问题

moon_r1ver 2010-09-28 09:24:18
#include<iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////////////
int main()
{
int *p1=NULL;//声明动态数组1
int *p2=NULL;//声明动态数组2
int length1=0,length2=0;//已使用的数组空间
int sizeOfArray1=0,sizeOfArray2=0;//数组总空间
////////////////////////////////////////////////////////////////////////////////////////////////////////////
if((p1=(int *)malloc(10*(sizeof(int))))==NULL)//为动态数组1分配空间,分配不成功,输出error
{
cout<<"error"<<endl;
exit(0);
}
else
{
sizeOfArray1=10;
}


if((p2=(int *)malloc(10*(sizeof(int))))==NULL)//为动态数组2分配空间,分配不成功,输出error
{
cout<<"error"<<endl;
exit(0);
}
else
{
sizeOfArray2=10;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
while(cin>>*(p1+(length1++)))//输入动态数组1
{
if(length1>=sizeOfArray1)//如果当前空间使用完了,在重新分配空间
{
if((p1=(int *)realloc(p1,(sizeOfArray1+10)*sizeof(int)))==NULL)
{
cout<<"error2"<<endl;
exit(0);
}
else
{
sizeOfArray1+=10;
}
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////
///下面出错了,为什么输不进去数组2 ,而是直接跳过数组2,数组1正确


//cout<<endl;//清空缓冲区 这个不行
// while(getchar()!='\n'); 这个也不行,都是直接跳过p2
//fflush(stdin);这个也一样

while(cin>>*(p2+(length2++)))//输入动态数组2
{
if(length2>=sizeOfArray2)//如果当前空间使用完了,在重新分配空间
{
if((p2=(int *)realloc(p2,(sizeOfArray2+10)*sizeof(int)))==NULL)
{
cout<<"error2"<<endl;
exit(0);
}
else
{
sizeOfArray2+=10;
}
}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
for(int i=0;i<length1-1;i++)//输出动态数组的各个元素
{
cout<<*(p1+i)<<",";
}
cout<<endl;
for(i=0;i<length2-1;i++)//输出动态数组的各个元素
{
cout<<*(p2+i)<<",";
}
return 0;
}
...全文
156 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-09-28
  • 打赏
  • 举报
回复
cin.clear();
cin.sync();
//cout<<endl;//清空缓冲区 这个不行

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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