关于结构体数组赋值的问题
来自谭浩强书Chapter9的基础题目,系统win10,IDE是visual studio2017。问题:scanf为结构体数组赋值时,成员数组最后一个值总是被下一次scanf的输入值覆盖。
请看源程序:
程序代码:
#include<stdio.h> #include<stdlib.h> typedef struct { int num; char name[5]; int score[2]; }Student; void main() { void printdata(Student*,int); Student s[2]; int lp = 0; for (lp = 0; lp <= 2; lp++) { printf("record num score*3\n"); scanf_s("%d %d %d %d", &s[lp].num, &s[lp].score[0], &s[lp].score[1], &s[lp].score[2]); fflush(stdin);//清空输入流 printf("name\n"); scanf_s("%s", s[lp].name,6); fflush(stdin);//清空输入流 printf("%d", s[lp].score[2]);//被覆盖的值在本轮内赋值是没问题的 } printf("num name score1 score2 score3\n"); for (lp = 0; lp <= 2; lp++) { printf("%3d %4s %6d %6d %6d\n", s[lp].num, s[lp].name, s[lp].score[0], s[lp].score[1], s[lp].score[2]); } system("pause");
就是说s.score[2]的值被s+1.num的值覆盖了,这是为何呀,求大神们解答。
此外还有一事相求,不知为何visual studio的“局部变量”似乎并没有显示结构体变量成员的值,不知道各位有没有什么方法能够看到它们,或者有好的plugin推荐。
初学菜菜感激不尽。