C结构 - 无法将结构变量分配给其他结构变量
问题描述:
我无法将一个结构变量(R2 = R1)分配给另一个结构变量。请帮我理解,为什么下面的程序没有被编译,以及将一个结构变量赋给其他程序的最佳方式是什么?C结构 - 无法将结构变量分配给其他结构变量
我厌倦了指针的方式。尽管如此代码是没有得到编译..
代码1:
#include<stdio.h>
struct Record
{
int ID;
char Name[];
}R1={1234,"King"},R2;
R2=R1;
int main()
{
printf("%d %s \n",R1.ID,R1.Name);
printf("%d %s \n",R2.ID,R2.Name);
}
代码2:
#include<stdio.h>
struct Record
{
int ID;
char Name[];
}R1={1234,"King"},*R2;
R2=&R1;
int main()
{
printf("%d %s \n",R1.ID,R1.Name);
printf("%d %s \n",R2->ID,R2->Name);
}
答
你可以试试这个。
#include <stdio.h>
#include <string.h>
typedef struct _Record
{
int ID;
char Name[10];
} Record;
int main()
{
Record R1, R2;
R1.ID = 1234;
strcpy(R1.Name, "king");
R2 = R1;
printf("%d %s \n",R1.ID,R1.Name);
printf("%d %s \n",R2.ID,R2.Name);
}
>>>
1234 king
1234 king
正如@piedar说,下面还工作
#include <stdio.h>
#include <string.h>
struct _Record
{
int ID;
char *Name;
} R1={1234,"king"}, R2;
int main()
{
R2 = R1;
printf("%d %s \n",R1.ID,R1.Name);
printf("%d %s \n",R2.ID,R2.Name);
}
答
在Code1
,您不能使用R2=R1
之外的C函数,否则GCC将报告错误。只需将R2=R1;
移入main
函数,然后程序将正常工作。
同样,将R2=&R1;
移动到main
函数中。
答
您还没有为该字符串声明任何空间。在一个结构的结束,没有大小的数组被称为flexible array member
struct Record
{
int ID;
char Name[];
}
你要分配一些内存的字符串like this
struct Record R1 = malloc(sizeof(struct Record) + 10 * sizeof(char));
并请,**声明**和** *设置* main()函数中的两个结构变量**。它伤害眼睛.. – YaatSuka
我试过下面, 的#include 结构记录 { \t INT ID; \t char名称[10]; R1 = {1234,“King”},* R2; R2 = &R1; INT主() { \t的printf( “%d%s的\ n” 个,R1.ID,R1.Name); printf(“%d%s \ n”,R2-> ID,R2-> Name); } 仍然不能正常工作 –
Bahubali
看到我更新的问题.. – Bahubali