帮忙分析一下这个错误

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:24:16
#include <stdio.h>

typedef struct //航班号数据类型
{

char yingwen[3];//前两位英文字母代表公司别称
char shuzi[5];//后4位为航班号

} hangbanhao;

typedef struct
{
hangbanhao hangban[8];
char qidian[20];
char zhongdian[20];
char banqi[20];
char qifei[20];
char daoda[20];
char jixing[20];
int piaojia;
} Data;//航班数据类型,包含航班所有信息

void init()//输入航班具体数据
{
Data Mydata[8];//

Mydata[0].hangban[0].yingwen = "CA";
Mydata[0].hangban[0].shuzi="1544";

}

说明:这是一个关于航班的数据结构,在对航班号赋值的时候出现错误,求解

简化如下:
char a[10];
a="abc";
这显然是错的,因为a是数组首地址,不能直接赋值
可以在定义时赋值,char a[10]="abc";

考虑你的问题,可以用strcpy函数,
如:
strcpy(Mydata[0].hangban[0].yingwen,"CA");
strcpy(Mydata[0].hangban[0].shuzi,"1544");
使用时要包含<string.h>头文件,
而且定义的数组要足够大,否则会出错

数组的首地址是不可以改变的,用拷贝函数复制你要赋值的字符串即可

#include <string.h>
#include <stdlib.h>
void init()//输入航班具体数据
{
Data Mydata[8];//

strncpy(Mydata[0].hangban[0].yingwen,"CA",sizeof(Mydata[0].hangban[0].yingwen));
strncpy(Mydata[0].hangban[0].shuzi,"1544",sizeof(Mydata[0].hangban[0].shuzi));

}

#include <stdio.h>
#include <string.h> //////////////////////////要包含这个文件,用于字符串的操作

typedef struct //航班号数据类型
{
char yingwen[3];//前两位英文字母代表公司别称
char shuzi[5];//后4位为航班号
} hangbanhao;

typedef struct
{
hangbanhao hang