| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:关于gets和scanf的调试结果的疑问
只看楼主 加入收藏
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于gets和scanf的调试结果的疑问
#include <stdio.h>
#include <string.h>

struct student
{
    char no[12];
    char name[10];
    int score[3];
};

void input(struct student s[],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        printf("学号:");
        //gets(s[i].no);
        scanf("%s",&s[i].no);
        printf("姓名:");
        //gets(s[i].name);
       scanf("%s",&s[i].name);
        for(j=0;j<3;j++)
        {
            printf("成绩%d:",j+1);
            scanf("%d",&s[i].score[j]);
        }
        printf("\n%s %s %d %d %d",s[i].no,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2]);
    }
}

void main()
{
    struct student stu[2];
    int i;
    input(stu,2);
    for(i=0;i<2;i++)
        printf("\n%15s%13s%4d%4d%4d\n",stu[i].no,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
}

红色部分如果改为gets,测试结果只有第一次可以输入学号
……
gets()括号里应该加的是指针对吗?
在struct的定义里面
char no[12]
那么为什么gets(s[i].no)第二次就不能输入了呢。。。请大家帮忙测试下。。。



   
搜索更多相关主题的帖子: 调试 结果 疑问 scanf gets 
2010-07-03 09:23
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
收藏
得分:0 
回复 楼主 aphase
咋没人回答啊  刀口刀……
2010-07-03 09:39
啊C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:84
专家分:177
注 册:2010-6-24
收藏
得分:20 
没人回答那我来回答,以前也有人问这个问题!
如果是循环用gets();要在前面加 fflush(stdin);
fflush(stdin);是起到清空输入缓冲区的作用,凡是输入字符变量的时候 一般都要用到它 .

亲爱的朋友们动起手来吧,让我们一起迈向C语言的世界!
2010-07-03 09:52
aphase
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-5-16
收藏
得分:0 
回复 3楼 啊C
啊可以了多谢


因为学习还没有学到内存这些方面的知识所以还有欠缺
……多谢
2010-07-03 09:54
快速回复:关于gets和scanf的调试结果的疑问
数据加载中...
 
   



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

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