| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1464 人关注过本帖
标题:scanf("%c",...)问题请教!!!!!!
只看楼主 加入收藏
刘根淼
Rank: 2
等 级:论坛游民
帖 子:13
专家分:39
注 册:2012-7-24
收藏
得分:2 
这个问题其实是因为前面的scanf函数输入的时候输入Enter键作为结束,然后‘\n’就存在输入流中,你可以像楼上几位那样用ffush(stdin),或者你也可以在前面加上一句getchar()也行(把'\n'接收掉就行了)。
加油
2012-08-18 08:41
liuguanglei
Rank: 2
等 级:论坛游民
帖 子:41
专家分:26
注 册:2012-8-15
收藏
得分:2 
#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;

}
给所有的scanf()后面吧地址&全部加上!
2012-08-18 11:55
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:2 
楼主,在代码中增加一句,可以解决你的问题(用红色标出来了)

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);//执行到该语句直接跳过,求教原因!!!!
    if(emp1.sex==10)scanf("%c",&emp1.sex);
    printf("\n请输入出生日期(yyyy/mm/dd):");
    scanf("%4d/%2d/%2d",&emp1.birthday.year,&emp1.birthday.month,&emp1.birthday.day);

原因是:
前面的 scanf("%s",emp1.name); 没有把键盘输入缓存区中的内容清干净,还留下一个换行符(ASC码为10),
后面的scanf("%c",&emp1.sex);发现键盘输入缓存区中有字符,就自动读取了。

做自己喜欢的事!
2012-08-19 15:47
jkss
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2012-8-19
收藏
得分:2 
楼主是否说的是没有执行输出性别结果呢,个人认为是scanf语句位置错误,你在该语句前就用 printf("%d\n",&emp1.sex);这条语句,还没输入就输出,所以,楼主可试试调换下scanf语句的位置
2012-08-19 17:43
dj125
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-16
收藏
得分:0 
回复 4楼 阿鞠尼
谢谢您的回答,让我进一步理解!
2012-08-19 19:34
dj125
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-16
收藏
得分:0 
回复 12楼 liuguanglei
谢谢您的回答!对于scanf有了些了解
谢谢

[ 本帖最后由 dj125 于 2012-8-19 20:10 编辑 ]
2012-08-19 19:47
dj125
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-16
收藏
得分:0 
回复 11楼 刘根淼
谢谢你的解释!让我进一步理解。谢谢
2012-08-19 20:09
快速回复:scanf("%c",...)问题请教!!!!!!
数据加载中...
 
   



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

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