| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1464 人关注过本帖
标题:scanf("%c",...)问题请教!!!!!!
只看楼主 加入收藏
dj125
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-16
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:16 
scanf("%c",...)问题请教!!!!!!
#include<stdio.h>
#include<stdlib.h>

struct date
{
    short int year;
    char month;
    char day;
};


struct emp
{
    char name[10];
    char addr[20];
    char sex;
    struct date birthday;
};


int main()
{
    struct emp emp1;

    printf("请输入员工信息:\n");
    printf("请输入姓名:");
    scanf("%s",emp1.name);
    printf("\n请输入住址:");
    scanf("%s",emp1.addr);
    printf("%d\n",&emp1.sex);
    printf("\n请输入性别(1-男,0-女):");
    scanf("%c",&emp1.sex);//执行到该语句直接跳过,求教原因!!!!
    printf("\n请输入出生日期(yyyy/mm/dd):");
    scanf("%4d/%2d/%2d",&emp1.birthday.year,&emp1.birthday.month,&emp1.birthday.day);
   
    printf("\n输出员工信息");
    printf("姓名:%s\n",emp1.name);
    printf("住址:%s\n",emp1.addr);
    printf("性别:%s\n",(emp1.sex==1)?"男":"女");
    printf("%4d/%02d/%02d\n",emp1.birthday.year,emp1.birthday.month,emp1.birthday.day);

    system("pause");
    return 0;

}
搜索更多相关主题的帖子: 信息 姓名 include 
2012-08-16 09:49
血祭幻岚
Rank: 2
等 级:论坛游民
帖 子:29
专家分:72
注 册:2012-3-21
收藏
得分:2 
在此语句前加个fflush(stdin)清除缓冲区试试~~~
2012-08-16 10:23
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:2 
;//执行到该语句直接跳过,求教原因!!!!
你看看上面代码你的scanf,printf用法,
应改成:
scanf("%c",&emp1.name);
printf("%s\n",emp1.name);
两个函数用法应该是这样吧
不过最好用sacnf前先清除缓存

[ 本帖最后由 Agdmeg 于 2012-8-16 12:40 编辑 ]
2012-08-16 12:36
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
收藏
得分:2 
2楼正解 不过我想问一句
 printf("%d\n",&emp1.sex);//////////////////////////这一句是干什么的
    printf("\n请输入性别(1-男,0-女):");
    scanf("%c",&emp1.sex);//执行到该语句直接跳过,求教原因!!!!
你也可以把他们换一下地方  移到前面

喜欢睡觉 却经常熬夜
2012-08-16 13:04
justNPC
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:311
注 册:2012-8-11
收藏
得分:2 
如一楼所说可以在语句前加一个 fflush(stdin)
也可以 scanf("%c",&emp1.sex) 在%c前面加一个空格
或者干脆把%c 改成%d
2012-08-16 13:04
li361li
Rank: 2
等 级:论坛游民
帖 子:35
专家分:43
注 册:2010-1-29
收藏
得分:2 
路过,都是正解
2012-08-16 16:35
Agdmeg
Rank: 4
来 自:四川成都
等 级:业余侠客
威 望:3
帖 子:101
专家分:201
注 册:2011-8-9
收藏
得分:0 
楼主,如果你问题解决了,那就请执行你的散分结贴程序吧
2012-08-16 18:49
犹豫情人
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:58
专家分:24
注 册:2010-7-1
收藏
得分:2 
想问一下为什么会出现这样的问题啊??内存溢出??在%c前面加个空格是什么理论啊!为什么我把那句换成emp1.sex=getchar();也不行呢!!??
2012-08-17 15:25
施熠
Rank: 2
来 自:南京
等 级:论坛游民
帖 子:69
专家分:29
注 册:2012-2-4
收藏
得分:2 
回复 楼主 dj125
是scanf函数,可能你写地址时有空格键,当scanf函数遇到空格键时,就不读了,把它保存在缓冲区,下次还有读scanf函数时就自动输入,直到再次出现空格键停止,所以不要用scanf ,你试试gets,就可以了·
2012-08-18 02:05
qq872551969
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:1
帖 子:241
专家分:1377
注 册:2012-7-13
收藏
得分:2 
这个问题问得不错,我不是很熟悉这方面的东西,容我研究研究。

编程交流请加群:【234181324】,一起学习,一起进步,新建的群,主打C语言和JAVA等程序设计,等待高手们的入驻,无论你是高手也好,新手也好,在这里都是平等的,欢迎你们的加入~!【234181324】
2012-08-18 08:31
快速回复:scanf("%c",...)问题请教!!!!!!
数据加载中...
 
   



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

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