C语言关于gets函数的问题

#include<stdio.h>
void main()
{
void abc();
void efg();
int i;
printf("输入对应号码:\n");
scanf("%d",&i);
if(i==1) abc();
else if(i==2) efg();
}

void abc()
{
char a[10];
printf("输入:\n");
gets(a);
puts(a);
}

void efg()
{
char a[10];
printf("请输入:\n");
scanf("%s",a);
puts(a);
}

像上面的程序,为什么abc()中用gets(a)运行时程序就错了,而efg()中用scanf就没问题,gets和scanf不是只差别在可不可以包含空格字符的吗?
最新回答
孤冢清风

2024-12-01 02:26:37

肯定会出错啊
printf("输入:\n");
gets(a);改成:
printf("输入:\n");
getchar();
gets(a);