首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

!getchar();gets();的有关问题

2012-02-14 
求助!getchar()gets()的问题!/*输入10个职工的姓名和职工号,按职工号由小到大排序,姓名也随之调整*/#inc

求助!getchar();gets();的问题!
/*输入10个职工的姓名和职工号,按职工号由小到大排序,姓名也随之调整*/
#include   "stdio.h "
#include   "string.h "
#define   N   10
void   main()
{
void   input(int   [],char   name[][8]);
void   sort(int   [],char   name[][8]);

int   num[N],number;
char   name[N][8];
input(num,name);
sort(num,name);


}

void   input   (int   num[],char   name[N][8])
{
int   i;
for(i=0;i <N;i++)
{
printf( "\ninput   No.: ");
scanf( "%d ",&num[i]);
printf( "input   name: ");
getchar();
gets(name[i]);
}
}

void   sort(int   num[],char   name[N][8])
{
int   i,j,min,temp1;
char   temp2[8];
for(i=0;i <N-1;i++)
{
min=i;
for(j=i;j <N;j++)
if(num[min]> num[j])   min=j;
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=temp1;
strcpy(name[min],temp2);
}
printf( "\n   result:\n ");
for(i=0;i <N;i++)
  printf( "\n%5d%10s ",num[i],name[i]);
}

问题1:input函数里头最后两句话,getchar();gets(name[i]);怎么解释?getchar()有什么用处啊?我总感觉没用,但是删了之后程序就有问题了!

[解决办法]
getchar()应该是过滤掉前面的输入数字后面的回车吧
不然gets()遇到 '\n '就会结束,这样name[i]就是空字符串
[解决办法]
一般在scanf ()语句后都会有一个getchar(),因为我们的习惯是输入数据后敲一下回车,这个回车也是输入的一个字符,并保存在输入缓冲区里,而这个回车符可能对后面的程序带来不必要麻烦。用getchar可以把它吃掉。

热点排行