VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3247|回复: 23

scanf的诡异

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-1 11:20:01 | 显示全部楼层 |阅读模式
今天用scanf发生了一个很诡异的事情, 它不等终端的输入, 直接返回0;并开始执行下一条语句。 望高手请教
回复

使用道具 举报

0

主题

55

帖子

44.00

积分

新手上路

Rank: 1

积分
44.00
发表于 2020-3-13 07:30:01 | 显示全部楼层
贴代码
回复

使用道具 举报

0

主题

63

帖子

43.00

积分

新手上路

Rank: 1

积分
43.00
发表于 2020-3-14 00:00:01 | 显示全部楼层
是不是\n之類的留在輸入流里拉?
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-3-14 01:30:01 | 显示全部楼层
printf("Please Select Test :");
int result = scanf("%d",&choice);

原因和调用的一个动态链接库中的函数有关, 但是至于到底是何什么相关,也看不到dll的原程序.
回复

使用道具 举报

0

主题

11

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-3-14 10:00:01 | 显示全部楼层
fgets 到 '\n' 为止。
回复

使用道具 举报

0

主题

55

帖子

44.00

积分

新手上路

Rank: 1

积分
44.00
发表于 2020-3-14 16:30:01 | 显示全部楼层
用fflush(stdin);清空输入缓冲区。
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-3-14 21:00:02 | 显示全部楼层
fflush(stdin);

加上这个就OK, 谢谢!
回复

使用道具 举报

0

主题

63

帖子

43.00

积分

新手上路

Rank: 1

积分
43.00
发表于 2020-3-16 14:00:01 | 显示全部楼层
int result = scanf("%*1d%d",&choice); //跳過1个字符看看
回复

使用道具 举报

0

主题

63

帖子

43.00

积分

新手上路

Rank: 1

积分
43.00
发表于 2020-3-16 16:45:01 | 显示全部楼层
fflush(stdin);明明是未定義之行爲,怎麽這麽多人喜歡用涅?
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-16 19:15:01 | 显示全部楼层
没有清空缓冲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表