C语言中gets及getchar()问题

voidinput(int*num,charname[N][8]){inti;for(i=0;i<N;i++){printf("\nInputNo.:");scanf("... void input(int *num,char name[N][8])
{
int i;
for (i=0;i<N;i++)
{
printf("\nInput No.:");
scanf("%d",&num[i]);
printf("\nInput name:");
getchar(); /* 为什么这里要用getchar() */
gets(name[i]);
}
}
这里能把"getchar()"删除吗?当从键盘输入wang时,程序是用getchar()先接受"w",然后再用gets(name[i])接受余下的字符"ang"吗?
展开
 我来答
竹林倾听雨
2010-04-11 · TA获得超过540个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:219万
展开全部

不可以

getchar()是用来接收scanf()后的回车键的

,否则name[i]始终是空 

#include <stdio.h>

void input(int *num,char name[10][8])

{

 int i;

 for (i=0;i<10;i++)

 {

  printf("\nInput No.:");

  scanf("%d",&num[i]);

  printf("\nInput name:");

  /*getchar(); */             /* 删除getchar()的效果  */

  gets(name[i]);

  printf("%d\n",num[i]);

  printf("%s", name[i]);

 }

int main()

{

 int num[10];

 char name[10][8];

 input(num, name);

 return 0;

}

删除后的效果:

skylm1234
2010-04-11 · TA获得超过306个赞
知道小有建树答主
回答量:198
采纳率:100%
帮助的人:238万
展开全部
其实那里不用也可以的,getchar()是用来接受一个字符的,也就是说当执行到那一句时你输入一个回车后,程序继续往下执行,每次循环到那一行你都要输入一个字符。
而gets()是用来输出字符串的,。如果只加数组名将输出全部元素。。
可以的,放在那没什么用处,如果想输出一个换行加个换行符就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑熬将胡
2010-04-11 · TA获得超过301个赞
知道小有建树答主
回答量:249
采纳率:0%
帮助的人:105万
展开全部
不可以,getchar()是用来接收scanf()后的回车键的
,否则name[i]始终是空

同意此观点.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式