C结构体数组三种方式赋值问题
1 #include <stdio.h>2 #include <stdlib.h>
3 #include <string.h>
4#define LEN 20
5#define COUNT 2
6#define NUM_LEN 10
7
8struct name
9{
10char Fname[LEN];
11char Mname[LEN];
12char Lastname[LEN];
13
14};
15
16struct insurrance
17{
18char num_insur[NUM_LEN];
19struct name names;
20};
21
22void input1(int count, struct insurrance arr_insur[]);
23void input2(int count, struct insurrance *pinsur);
24
25int main(void)
26{
27
28struct insurrance arr_insur[COUNT] =
29 {
30 {
31//第一种:不可以
32 .num_insur = "12345678",
33 {"sheng", "M.", "shuai"}
34
35//第二种不可以
36// .names.Fname = "sheng",
37// .names.Mname = "M.",
38// .names.Lastname = "shuai"
39 },
40 {
41 .num_insur = "12345678",
42 .names = {"shi", "T.", "long"}
43// .Fname = "shi",
44////// .Mname = "",
45// .Lastname = "long"
46 }
47 };
48
49//第三种可以
50// struct insurrance arr_insur[COUNT];
51
52// strcpy(arr_insur[0].num_insur, "123456789");
53// strcpy(arr_insur[0].names.Fname, "sheng");
54// strcpy(arr_insur[0].names.Lastname, "shuai");
55// strcpy(arr_insur[0].names.Mname, "S");
56//
57// strcpy(arr_insur[1].num_insur, "123456789");
58// strcpy(arr_insur[1].names.Fname, "shi");
59// strcpy(arr_insur[1].names.Lastname, "long");
60// strcpy(arr_insur[1].names.Mname, "S");
61
62// printf("%s", arr_insur[1].names.Mname);
63 input1(COUNT, arr_insur);
64 input2(COUNT, arr_insur);
65
66return0;
67}
68
69void input2(int count, struct insurrance *pinsur)
70{
71int i;
72for(i = 0; i < count; i++)
73 {
74if(strcmp((pinsur+i)->names.Mname, "") > 0)
75 {
76 printf("%s,%s %s. -- %sn", (pinsur+i)->names.Fname, (pinsur+i)->names.Lastname, (pinsur+i)->names.Mname, (pinsur+i)->num_insur);
77 }else
78 {
79 printf("%s,%s -- %sn", (pinsur+i)->names.Fname, (pinsur+i)->names.Lastname, (pinsur+i)->num_insur);
80 }
81 }
82}
83
84void input1(int count, struct insurrance arr_insur[])
85{
86int i;
87for(i = 0; i < count; i++)
88 {
89if(strcmp(arr_insur[i].names.Mname, "") > 0)
90 {
91 printf("%s,%s %s. -- %sn", arr_insur[i].names.Fname, arr_insur[i].names.Lastname, arr_insur[i].names.Mname,arr_insur[i].num_insur);
92 }else
93 {
94 printf("%s,%s -- %sn", arr_insur[i].names.Fname, arr_insur[i].names.Lastname, arr_insur[i].num_insur);
95 }
96 }
97 }
回答
噢!问题找到了,问题出在编译软件上,Dev-C++,一看名字就是对C++进行的编译,而C与C++在某些细节上是有区别的。
你的那本应该是关于C的书吧,里面没有讲到C与C++在结构体复制上的区别。
你的编译软件Dev-C++是可以编译C,也可以编译C++文件,一个后缀是.c另一个后缀是.cpp,但主要是编译C++,一看软件的名字就知道了
当我使用Dev对.c文件进行编译的时候,报错更多了
以上是 C结构体数组三种方式赋值问题 的全部内容, 来源链接: utcz.com/a/32765.html