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

回到顶部