首页 > 解决方案 > 如何将结构的char数组复制到结构的另一个char数组中?

问题描述

#include <iostream>
using namespace std;

struct stud
{
    char name[10];
    int id;
};

int input(stud a[], int size)
{
    for(int i=1; i<=size; i++)
    {
        cout<<"name = ";
        cin>>a[i].name;
        cout<<"id = ";
        cin>>a[i].id;
    }
    cout<<endl;
    return 0;
}
int output(stud a[], int size)
{
    for(int i=1; i<=size; i++)
    {
        cout<<"name = "<<a[i].name<<" ";
        cout<<"id = "<<a[i].id<<" ";
    }
    cout<<endl;
    return 0;
}

int copy(stud a[], stud x[], int size)
{

    for(int i=1; i<=size; i++)
    {
        x[i].name=a[i].name; 
        x[i].id=a[i].id;
    }
    output(x,size);
    cout<<endl;
    return 0;
}

int main()
{

    struct stud s[3], x[3];
    input(s,3);
    output(s,3);
    copy(s,x,3);
    return 0;
}

在这个程序中,函数 copyx[i].name =a[i].name;中的语句不是将内容从一个结构对象复制到另一个结构对象。我试图将此语句放入 for 循环中,for(int j=1;j<=10;j++) x[i].name[j] =a[i].name[j];但仍然无法正常工作。请建议应该改变什么或一些替代方案。我会非常感谢你的。

问候,奥马尔

标签: c++arraysstructure

解决方案


Evrey 单个循环是错误的,因为在 C++ 中,数组从零开始。所以不是

for(int i=1; i<=size; i++)

反而

for(int i=0; i<size; i++)

您不能通过写入来复制数组a = b;。由于您的数组实际上是字符串,因此有一个内置函数strcpy可以复制字符串。

strcpy(x[i].name, a[i].name);

推荐阅读