标题:关于结构体数组赋值的问题
取消只看楼主
knightfyx
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2018-3-7
结帖率:100%
已结贴  问题点数:20 回复次数:2 
关于结构体数组赋值的问题
来自谭浩强书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推荐。
初学菜菜感激不尽。
搜索更多相关主题的帖子: score 结构体 name num printf 
2020-06-02 13:13
knightfyx
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2018-3-7
得分:0 
回复 2楼 rjsp
哦哦,感谢感谢大神,原来是这么简单的错误,我都没发现。那个fflush(stdin)是完成题目图省事的用法就请不用在意了。另外,如何让visual studio在调试时监视结构体变量成员的值呢?
2020-06-02 13:24
knightfyx
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2018-3-7
得分:0 
回复 4楼 rjsp
是可以的,我自己visual studio用得并不熟,总之还是很感谢了
2020-06-02 13:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501924-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.528072 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved