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 8 struct name 9 { 10 char Fname[LEN]; 11 char Mname[LEN]; 12 char Lastname[LEN]; 13 14 }; 15 16 struct insurrance 17 { 18 char num_insur[NUM_LEN]; 19 struct name names; 20 }; 21 22 void input1(int count, struct insurrance arr_insur[]); 23 void input2(int count, struct insurrance *pinsur); 24 25 int main(void) 26 { 27 28 struct 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 66 return 0; 67 } 68 69 void input2(int count, struct insurrance *pinsur) 70 { 71 int i; 72 for(i = 0; i < count; i++) 73 { 74 if(strcmp((pinsur+i)->names.Mname, "") > 0) 75 { 76 printf("%s,%s %s. -- %s\n", (pinsur+i)->names.Fname, (pinsur+i)->names.Lastname, (pinsur+i)->names.Mname, (pinsur+i)->num_insur); 77 }else 78 { 79 printf("%s,%s -- %s\n", (pinsur+i)->names.Fname, (pinsur+i)->names.Lastname, (pinsur+i)->num_insur); 80 } 81 } 82 } 83 84 void input1(int count, struct insurrance arr_insur[]) 85 { 86 int i; 87 for(i = 0; i < count; i++) 88 { 89 if(strcmp(arr_insur[i].names.Mname, "") > 0) 90 { 91 printf("%s,%s %s. -- %s\n", 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 -- %s\n", 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文件进行编译的时候,报错更多了
这也就意味着,你选择的编译软件不对,并不能说你的代码是错的,对于Dev编译器报错,我找到了相关的解释,请看文章->https://www.cnblogs.com/heartchord/p/4797723.html
请务必看完,里面有C与C++的区别
而我换了一个编译软件,换成了支持C语言又支持C++的Clion,新建了一个关于C的编译环境就可以成功编译你的代码了
这是具体编译运行结果
@Conan-jine: 谢谢前辈,有些问题,我发你消息了。