| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 908 人关注过本帖
标题:结构体问题,但感觉是我的循环出了问题
只看楼主 加入收藏
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
结构体问题,但感觉是我的循环出了问题
}stu[N];
int main()
{
    struct student stu[N];
    int i=0;
    int index,count;
    printf("Please enter the name:");
    while(i<N&&gets(stu[i].name)!=NULL)
    {
        printf("Please enter the number:");
        gets(stu[i].num);
        printf("Please enter the sorce:");
        for(index=0;index<4;index++)
        {
            scanf("%d",&stu[i].sorce[index]);
        }
        i++;
        if(i<N)printf("Please enter next name:");
    }
    printf("Here is the list of students:\n");
    for(index=0;index<i;index++)
    {
        puts(stu[index].name);
        printf("\n");
        puts(stu[index].num);
        printf("\n");
        for(count=0;count<4;count++)
        printf("%d ",stu[index].sorce[count]);
        printf("\n");
    }
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

不知道为什么,第二次循环的时候,name的输入应该是不进行了。求指点
搜索更多相关主题的帖子: number 结构体 count 
2016-12-11 23:20
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 楼主 jdljy1997
#include<stdio.h>
#define N 5

struct student {
    char num[10];
    char name[20];
    int sorce[4];
}stu[N];
int main()
{
    struct student stu[N];
    int i=0;
    int index,count;
    printf("Please enter the name:");
    while(i<N&&gets(stu[i].name)!=NULL)
    {
        printf("Please enter the number:");
        gets(stu[i].num);
        printf("Please enter the sorce:");
        for(index=0;index<4;index++)
        {
            scanf("%d",&stu[i].sorce[index]);
        }
        i++;
        if(i<N)printf("Please enter next name:");
    }
    printf("Here is the list of students:\n");
    for(index=0;index<i;index++)
    {
        puts(stu[index].name);
        printf("\n");
        puts(stu[index].num);
        printf("\n");
        for(count=0;count<4;count++)
        printf("%d ",stu[index].sorce[count]);
        printf("\n");
    }
    return 0;
}
代码刚刚复制错了,这个是代码
2016-12-11 23:21
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
求指点
2016-12-11 23:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
要消除scanf留下来的换行符影响,

把这句改为//scanf("%d%*c",&stu[i].sorce[index]);试试看
%*c意思是舍弃输入的一个字符,能吸收换行符\n

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-11 23:56
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 4楼 九转星河
还是麻烦问一下啊scanf 为什么会留下换行符呢,之前语句为什么没有这种情况呢
2016-12-12 23:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 5楼 jdljy1997
因为这种情况当scanf下面跟%c或者getchar的时候才会出现如果scanf后面出现直接输入%d或者其他格式是没有这种情况的,%c和getchar会吃回车

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-12 23:36
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 6楼 九转星河
那如果我不用gets而使用scanf语句就不会出现这样的问题了么?

[此贴子已经被作者于2016-12-12 23:42编辑过]

2016-12-12 23:38
快速回复:结构体问题,但感觉是我的循环出了问题
数据加载中...
 
   



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

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