c语言问题:定义了一个结构体,并对其赋值

typedef struct{
char scode;//车站代码,用A,B等表示
int sno;//车站编号,主要用于最短路线函数
char sname[15];
char sshortname[10];//简称
int slno[4];//所属铁路线编号
}station;//火车站对象

s[maxsize]={
{1,"A","北京","BJ",1,4,5},
{2,"B","上海","SH",4,8},
{3,"C","杭州","HZ",4,6},
{4,"D","江西","JX",1,6},
{5,"E","苏州","SZ",5,6,7,8,9},
{6,"F","南京","NJ",2,3,4},
{7,"S","哈尔滨","HEB",1,2},
{8,"T","天津","TJ",1,3,9}};

错误error C2143: syntax error : missing ';' before ','为什么?应该怎么改?
很急,谢谢!
谢谢你们!下面是改正后的代码:
#define maxsize 12
typedef struct{
int sno;//车站编号,主要用于最短路线函数
char scode;//车站代码,用A,B等表示
char sname[15];
char sshortname[10];//简称
int slno[5];//所属铁路线编号
}station;//火车站对象
station s[maxsize];

s[maxsize]={
{1,'A',"北京","BJ",{1,4,5}},
{2,'B',"上海","SH",{4,8}},
{3,'C',"杭州","HZ",{4,6}},
{4,'D',"江西","JX",{1,6}},
{5,'E',"苏州","SZ",{5,6,7,8,9}},
{6,'F',"南京","NJ",{2,3,4}},
{7,'S',"哈尔滨","HEB",{1,2}},
{8,'T',"天津","TJ",{1,3,9}}};
可是还是那个问题,为什么?我对maxsize定义过了。

第一,第一个参数和第二个参数顺序有问题

第二,编号是char不能用双引号

第三,苏州站多了一个参数



这样编译,运行通过了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-27
有几点问题,
1,你这是station的对象是吧。结构体才5项,而下面初始化居然有7项!!!!!!
2,s[maxsize]如果是station类型的,前面要用它声明。
3,如果scode就是你所谓的车站代码,是char型。而你赋值的时候确是字符串型。如:“A”,这是字符串,而char型应该是‘A’
我就看到这几点有问题。
#define M 10
#define maxsize 12
typedef struct{ int sno;//车站编号,主要用于最短路线函数
char scode;//车站代码,用A,B等表示
char sname[15];
char sshortname[10];//简称
int slno[5];//所属铁路线编号
}station;//火车站对象
station s[maxsize]=
{
{1,'A',"北京","BJ",{1,4,5}},
{2,'B',"上海","SH",{4,8}},
{3,'C',"杭州","HZ",{4,6}},
{4,'D',"江西","JX",{1,6}},
{5,'E',"苏州","SZ",{5,6,7,8,9}},
{6,'F',"南京","NJ",{2,3,4}},
{7,'S',"哈尔滨","HEB",{1,2}},
{8,'T',"天津","TJ",{1,3,9}}};
void main()
{
;
}
初始化不可以分开。。。。
第2个回答  2012-12-27
主要原因:
第一: int sno;//车站编号,主要用于最短路线函数 你赋值了一个字符指针"A",
第二: int slno[4];//所属铁路线编号 这里的值,要用大括号括起来,这样才是一个数组

其中任意一个的改法:
{1,'A',"北京","BJ",{1,4,5}},
其它一样的道理,实际上就是因为赋的值跟声明的变量类型不对应造成的

maxsize有声明赋值么?这个也需要声明和赋值的
第3个回答  2012-12-27
typedef struct
{
char scode;//车站代码,用A,B等表示
int sno;//车站编号,主要用于最短路线函数
char sname[15];
char sshortname[10];//简称
int slno[4];//所属铁路线编号
}station;//火车站对象
station s[maxsize]={
{'A',1,"北京","BJ",1,4,5},
{'B',2,"上海","SH",4,8},
{'C',3,"杭州","HZ",4,6},
{'D',4,"江西","JX",1,6},
{'E',5,"苏州","SZ",5,6,7,8},
{'F',6,"南京","NJ",2,3,4},
{'S',7,"哈尔滨","HEB",1,2},
{'T',8,"天津","TJ",3,9}};
第4个回答  2012-12-27
1. 车站代码和车站编号是不是位置写反了?
2. 铁路线编号为 slno[4],可是后面第五组数据,却出现了五个数字追问

谢谢你提的这两点,可是还是有错误,和原来一样。像苏州这一行,就有下面三个错误
error C2143: syntax error : missing ';' before '{'
error C2143: syntax error : missing ';' before '}'
error C2143: syntax error : missing ';' before ','
你知道为什么吗?谢谢!

追答

就这样咯~~

追问

嗯,是的。为什么先定义再赋值是错的,要在定义的时候赋值呢?你用的是什么程序写的?

追答

先定义再赋值是对的,只是你的格式写的不对啊
我用的codeblocks12.11 你要的话,我可以给你个链接

本回答被提问者采纳
相似回答