求助 关于C++的输入问题

haoxiaa115 2009-03-25 06:35:56
这是一个程序的写入部分 疑惑的是 如果用C风格的写入方法(程序中注释部分) 一点问题没有,二个循环都能把数字读进去 而用C++风格的(见下面代码),换了各种方法,第二个循环打死都写不进去,好像消失了一样
望XDJM们帮我看看 着实郁闷了一下~
#include<iostream>
#include<cstdio>
using namespace std;
const int Max=50;
int a[30],b[30];
int ai,bi;
int i,j;
int findvalue[Max]={2};
int findvalue1[Max]={4};
void input(){
ai=0;bi=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int x;
char ch;
int y;
char bh;
/*while(1)
{
scanf( "%d%c" , &x , &ch );
a[++ai] = x;
if( ch == ' ' ) break; //当数字后面是空格时,说明第一个数输入完毕
}
while(1)
{
scanf( "%d%c" , &x , &ch );
b[++bi] = x;
if( ch != ',' ) break; //当数字后面不是逗号时,说明第二个数输入完毕
}*/

while(cin>>x>>ch)
{
a[++ai]=x;
if(ch==' ') break;
}
while(cin>>y>>bh)
{

b[++bi]=y;
if( bh != ',' ) break;
}
for(int t1=1;t1<=ai;t1++)
cout<<a[t1];
for(t1=1;t1<=bi;t1++)
cout<<b[t1];


}
int main(){
// fun(30);
input();
// swap();
// add();
}
...全文
108 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxgiter 2009-03-25
  • 打赏
  • 举报
回复
调试跟踪一下就行了。
tab0tab 2009-03-25
  • 打赏
  • 举报
回复
调试一下,进入程序就知道了.
ReViSion 2009-03-25
  • 打赏
  • 举报
回复
哈哈,晚了,说完啦
deerwin1986 2009-03-25
  • 打赏
  • 举报
回复
这种要区别空格与否的情况 用SCANF没什么不好 也不用非得换成CIN 没有必要 思路清晰地解决问题就好了 这些都属于细枝末节...
wangyadong 2009-03-25
  • 打赏
  • 举报
回复
晚一步!
wangyadong 2009-03-25
  • 打赏
  • 举报
回复
cin是不能接受空格的,建议把空格
改成其他,如逗号就可以了
bushizhuge 2009-03-25
  • 打赏
  • 举报
回复
if( ch == ' ' ) break; //当数字后面是空格时,说明第一个数输入完毕 因为你希望输入空格来结束循环,但是cin会自动忽略空格,所以你永远在第一个循环之中。你改成 if( ch == ',' ) break;测试一下,输入一个数字,回车,再输入,回车,此时应该会跳出循环,到下面的循环之中.
ok88062736 2009-03-25
  • 打赏
  • 举报
回复
你的代码错误出在第一个循环的if(ch==' ') break; 语句
或者你可以去试试把' ' 改成相应的ASC码值...
china_west 2009-03-25
  • 打赏
  • 举报
回复
新手,幫頂

65,211

社区成员

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

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