+ -
当前位置:首页 → 问答吧 → 两个数组复制 为什么 总是输出汤

两个数组复制 为什么 总是输出汤

时间:2011-12-11

来源:互联网

#include<iostream>
using namespace std;
const int n=100;
int main()
{char a[n],b[n];
int i,j;
cout<<"输入数组a"<<endl;
cin>>a;
for(i=0;a[i]!='\0';i++);
for(j=0;b[j]=='\0';j++)
{b[j]=a[i];
i++;}
cout<<"a[]="<<a<<'\n'<<"b[]="<<b<<endl;
return 0;}

作者: Smallearth   发布时间: 2011-12-11

b数组是空的

作者: zllqjf   发布时间: 2011-12-11

一般输出 烫。。。就代表是未被初始化的数据了

作者: clodfront   发布时间: 2011-12-11

[code=C/C++][/code]for(i=0;a[i]!='\0';i++);
后面逗号去掉

作者: quan958201599   发布时间: 2011-12-11

说错了。

作者: quan958201599   发布时间: 2011-12-11

C/C++ code
#include<iostream>
using namespace std;
const int n=100;
int main()
{
    char a[n],b[n];
    memset(b,0,n);
    int i,j;
    cout<<"输入数组a"<<endl;
    cin>>a;
    for(i=0;a[i]!='\0';i++)
    for(j=0;b[j]=='\0';j++)
    {
        b[j]=a[i];
        
        i++;
    }
    cout<<"a[]="<<a<<'\n'<<"b[]="<<b<<endl;
    return 0;
}

作者: zllqjf   发布时间: 2011-12-11

#include<iostream>
using namespace std;
const int n=100;
int main()
{char a[n],b[n];
int i,j;
cout<<"输入数组a"<<endl;
cin>>a;
for(i=0,j=0;a[i]!='\0';i++,j++)
b[j]=a[i];
b[j]='\0';
cout<<"a[]="<<a<<'\n'<<"b[]="<<b<<endl;
return 0;}

作者: a81895898   发布时间: 2011-12-11

根本问题是你的两数组没有初始化!!!
加上char a[]={0},b[]={0}就行了;
因为没初始化,b不空是内存中的随机字符,
第二个循环不起作用。

作者: timerfire   发布时间: 2011-12-11

#include<iostream>
using namespace std;
const int n=100;
int main()
{char a[n],b[n];
int i,j;
cout<<"输入数组a"<<endl;
cin>>a;
for(i=0,j=0;a[i]!='\0';i++,j++)
b[j]=a[i];
b[j]='\0';
cout<<"a[]="<<a<<'\n'<<"b[]="<<b<<endl;
return 0;}
运行结果
输入数组a
5
a【】=5
b【】=5

作者: bobo928843007   发布时间: 2011-12-11

memset(b,0,n);
什么意思啊

作者: Smallearth   发布时间: 2011-12-11

引用 9 楼 smallearth 的回复:memset(b,0,n);什么意思啊


填充为0作为初始化
其实完全没必要这样写,如下即可
char a[n]={0},b[n]={0}; // 初始化为0

作者: yisikaipu   发布时间: 2011-12-12