如何将一个结构的字符数组复制到结构的另一个字符数组中?
How to copy char array of a structure into another char array of a structure?
#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;
}
在此程序中,函数复制x[i].name =a[i].name;
中的语句不会将内容从一个结构对象复制到另一个结构对象。我试图将此语句放入循环for(int j=1;j<=10;j++) x[i].name[j] =a[i].name[j];
但仍然不起作用。 请建议应该更改的内容或一些替代方案。 为此,我将非常感谢您。
问候 奥马尔
使用循环复制name
字段中的每个字符或使用标头中的strcpy
函数<cstring>
都可以。
int copy(stud a[], stud x[], int size) {
for(int i = 1; i <= size; i++) {
// for(unsigned j = 0; j < 10; j++) {
// x[i].name[j] = a[i].name[j];
// }
strcpy(x[i].name, a[i].name);
x[i].id = a[i].id;
}
output(x, size);
cout << endl;
return 0;
}
但是由于您将其标记为c++
,请考虑使用std::string
而不是 char 数组,除非您有特殊原因使用 char 数组。在这种情况下,x[i].name = a[i].name
可以正常工作,您也可以使用标准algorithm
库进行复制。此外,使用std::array
而不是原始 C 数组作为"结构数组"可能是一个更好的选择(不会像常规 C 数组那样退化为指针(。
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);
如果使用=
复制结构,则将复制该结构内的char数组。您不需要再执行任何操作。
#include <iostream>
using namespace std;
typedef struct{
char name[10];
} type_t;
int main() {
type_t a = {"hihi"};
type_t b;
b = a;
a.name[0] = 'a';
cout<<a.name<<endl;
cout<<b.name<<endl;
return 0;
}
输出: 爱姬 希希
IDONE: https://ideone.com/Zk5YFd
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?