| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:请问下这是为什么
只看楼主 加入收藏
zgzhly
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2008-10-17
结帖率:100%
收藏
 问题点数:0 回复次数:4 
请问下这是为什么
下面是一段程序,先输入号再输入姓名,便是直接用gets()函数不能输入姓名,而要在前面加个getchar()才能输,有知道为什么的吗?版主看到了麻烦说下谢谢
#include<stdio.h>
#define N 10
int a[N];
char name[N][10];
void Input(void)
{
 int i;
 for(i=0;i<N;i++)
 {printf("Input NO.:");
 scanf("%d",&a[i]);
 printf("Input name:");
 getchar();
 gets(name[i]);
 }
}
搜索更多相关主题的帖子: include 姓名 
2008-12-11 23:09
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
scanf("%d",&a[i]);   <----------因为在执行前边的这个scanf()函数的时候会在键盘缓冲区里留下来一个换行符(按Enter键确定的时候)

printf("Input name:");
getchar();             <------所以后面一定要用getchar();将这个垃圾字符接收掉,否则gets(name[i]);将此换行符又看做空串放入name[i]中,gets()就无法接收你所要的字符串了。
gets(name[i]);
2008-12-12 00:11
guoming1232006
Rank: 2
等 级:新手上路
威 望:4
帖 子:438
专家分:0
注 册:2008-11-20
收藏
得分:0 
#include<stdio.h>
#define N 10
int a[N];
char name[N][10];    /*这里为什么要定义成二维数组?*/
void Input(void)    /*这是主函数么?*/
{
int i;
for(i=0;i<N;i++)
{printf("Input NO.:");
scanf("%d",&a[i]);
printf("Input name:");
getchar();                /*这可以删除了*/
gets(name[i]);
}
}
改成这样的:
#include<stdio.h>
#define N 10
main()
{int a[N];
char name[N];
int i;
for(i=0;i<N;i++)
{printf("Input NO.:");
scanf("%d",&a[i]);
printf("Input name:");
gets(name[i]);
}
}  看看能不能满足你的要求。

寡人有疾,寡人好色......
2008-12-12 00:13
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
当程序要求有输入数据时,首先会把输入的数据送到缓冲区中,然后在将缓冲区中的数据送给变量
此程序是 输入一个整型数d,以回车结束(\n)
数d 送给a[i];而字符 ‘\n’仍保留在缓冲区中,等待下一个要求输入字符的数据,并赋给它
故当 执行t=getchar()时,会将此字符赋给此变量t;
然后我们才能进行输入数据

例 for(i=0;i<4;i++)
      scanf("%c",&a[i]);
若一个字符一个的输入,会发现只能出输入3个字符

多少个日日夜夜想起你,只希望有缘再次相见
2008-12-12 00:17
zgzhly
Rank: 1
等 级:新手上路
帖 子:68
专家分:7
注 册:2008-10-17
收藏
得分:0 
thank you!!懂了!
2008-12-12 14:43
快速回复:请问下这是为什么
数据加载中...
 
   



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

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