社区
C语言
帖子详情
急!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
打赏
收藏
急!gets()函数怎么没用了..
以下是我的程序 #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就输不了,这是怎么回事?
复制链接
扫一扫
分享
转发到动态
举报
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);
}
密码学(二月最佳)
《主干目录》 第一代加密 隐藏 第二代加密 移位 替代 同音替代 第三代加密 维吉尼亚加密 第四代加密 Enigma(恩尼格玛机) 第五代加密 DES 第六代加密 RSA 第七代加密 量子加密 ...
HNU-计算机系统实验-buflab-2022级
本实验的目的在于加深对IA-32
函数
调用规则和栈结构的具体理解。实验的主要内容是对一个可执行程序“bufbomb”实施一系列缓冲区溢出攻击(buffer overflow attacks),也就是设法通过造成缓冲区溢出来改变该可执行程序的运行内存映像,继而执行一些原来程序中没有的行为,例如将给定的字节序列插入到其本不应出现的内存位置等。本次实验需要你熟练运用gdb、objdump、gcc等工具完成。在这个实验中我们有三个主要文件bufbomb :这个是我们要进行攻击的,具有缓冲区漏洞的文件。
Android Binder 分析——多线程支持
前面普通服务篇那里说到 ActivityManager(AM) 里锁的问题,其实不光 AM,WindowManager(WM)、PackageMananger(PM)中基本上很多对外的业务
函数
里面都是加锁的,所以这些 SS 里面有会有带 Locked 结尾的
函数
(这些
函数
都是在锁里执行)。这里就提出一个疑问为什么要加锁。这篇就来解答这个问题,顺带扯出 binder 的多线程支持的问题。 照例先把
vue知识总结
为何组件的data必须是一个
函数
一、实例和组件定义data的区别 vue实例中的data属性既可以是一个对象,也可以是一个
函数
const app = new Vue({ el:"#app", // 对象格式 data:{ foo:"foo" }, //
函数
格式 data(){ return { foo:"foo" } } 组件中定义data属性,只能是一个
函数
Tomcat 源码解析一容器加载-大寂灭指(中)
tomcat StandardContext启动
C语言
70,029
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章