帮忙分析一下这个错误
来源:百度知道 编辑: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";
}
说明:这是一个关于航班的数据结构,在对航班号赋值的时候出现错误,求解
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