急!gets()函数怎么没用了..

wzywsk 2009-10-06 12:30:58
以下是我的程序
#include "stdio.h"
void main()
{
int number;
char address[20];
printf("input nember and address:");
scanf("%d",&number);
printf("input address");
gets(address);

}


我在输入完number后程序就结束了address就输不了,这是怎么回事?
...全文
1261 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobo45123 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 aizibion 的回复:]
#include "stdio.h"
void main()

int number;
char address[20];
printf("input nember and address:");
scanf("%d",&number);
fflush(stdin);
printf("input address");
gets(address);

楼上的正解

}
[/Quote]
aizibion 2009-10-06
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
int number;
char address[20];
printf("input nember and address:");
scanf("%d",&number);
fflush(stdin);
printf("input address");
gets(address);

}
brookmill 2009-10-06
  • 打赏
  • 举报
回复
scanf("%d",&number);
在这里加一行 fflush(stdin);
printf("input address");
飞天御剑流 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 wzywsk 的回复:]
以下是我的程序
            #include "stdio.h"
            void main()
            { 
          int number;
                  char address[20];
                  printf("input nember and address:");
                  scanf("%d",&number);
                  printf("input address");
                  gets(address);
   
              }


我在输入完number后程序就结束了address就输不了,这是怎么回事?
[/Quote]

gets读取了前面scanf留在缓冲中的回车。在gets之前刷新一下缓冲就行了,例如:

while( ( *address = getchar() ) != '\n' && *address != EOF );
clearerr( stdin );
gets( address );
t1397018 2009-10-06
  • 打赏
  • 举报
回复
gets貌似已经不让用了
hanbingture 2009-10-06
  • 打赏
  • 举报
回复
在程序最后加上这样system("pause");要不然程序就退出了
菜鸟二号 2009-10-06
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
int number;
char address[20];
printf("input address");
gets(address);
printf("input nember");
scanf("%d",&number);

}
不如这样
fengyang987 2009-10-06
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
int number;
char address[20];
printf("input nember and address:");
scanf("%d",&number);
getchar(); // 吸收回车字符
printf("input address");
gets(address);

}

jackyjkchen 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 t1397018 的回复:]
gets貌似已经不让用了
[/Quote]
是不推荐,我建议楼主用gets_s,gets本身就是个极其严重的缓冲区溢出漏洞
zhideyongyou007 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 aifei521 的回复:]
  #include "stdio.h"
            void main()
            { 
          int number;
                  char address[20];
                  printf("input nember and address:");
                  scanf("%d",&number);
  getchar();//吸收你输入number后的回车符就可以了
                  printf("input address");
                  gets(address);
   
              }

[/Quote]

这个也可以实现
飞天御剑流 2009-10-06
  • 打赏
  • 举报
回复
不要用fflush(stdin),fflush是用于输出流的,用在输入流是未定义行为,是垃圾代码。
aifei521 2009-10-06
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
int number;
char address[20];
printf("input nember and address:");
scanf("%d",&number);
getchar();//吸收你输入number后的回车符就可以了
printf("input address");
gets(address);

}

70,029

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧