[问题] scanf的奇妙bug?

楼主: d630200x (DOGE)   2019-02-26 15:37:12
用的编译器是gcc
平台是linux
刚刚写一个无穷循环
char word;
while(1)
{
printf("something\n");
scanf("%c", &word);
}
用%c的话,something一定会重复印两行才会给我输入word
但改成%s的话就又没这个bug了
请问这是什么问题?
作者: nh60211as   2019-02-26 16:08:00
你有把word印出来看是什么吗
作者: samuelcdf (温泉龟)   2019-02-26 16:14:00
&word如果是%s的话, 你对应的word应该会宣告阵列吧. 直接写阵列名结果跟 &阵列名[0] 一样
楼主: d630200x (DOGE)   2019-02-26 16:19:00
有加上&word,刚刚没打到主要是我另一支程式有用自字符做判断,且判断式使用都ok,但就是会莫名印两行,后来另外这样写做测试也是一样情况
作者: samuelcdf (温泉龟)   2019-02-26 16:26:00
\n还在buffer里面, 所以循环多跑一次
楼主: d630200x (DOGE)   2019-02-26 16:31:00
为什么\n会还在buffer里?为什么循环会重跑?
作者: samuelcdf (温泉龟)   2019-02-26 16:33:00
每次你输入一个字符之后, 接着会按enter. 那个enter也被当成另外一个输入的字符了
作者: nthank (不谢)   2019-02-26 17:38:00
输入的enter也算是一个字符
作者: MOONRAKER (㊣牛鹤鳗毛人)   2019-02-26 18:12:00
到底写了多少程式才发现这个大家都知道的伟大bug
作者: dces4212 (flawless)   2019-02-26 19:01:00
stdin buffer里面还有enter字符
作者: stupid0319 (征女友)   2019-02-26 19:03:00
月经文
作者: chchwy (mat)   2019-02-26 19:53:00
1. 换行符号 2. 这不是bug
作者: tomsawyer (安安)   2019-02-26 21:02:00
cin也会啊lul
作者: Bencrie   2019-02-27 01:28:00
好险你没有真的去 bugzilla 报 bug XD
作者: IhateOGC (我讨厌)   2019-02-27 09:45:00
台湾之光!! 快点去报Bug,这很明显是Bug我资料表单就常常遇到这鸟问题
作者: OhYiDay (小白Z)   2019-02-27 10:57:00
XD
作者: TitanEric (泰坦)   2019-02-27 11:37:00
抱歉我笑了
作者: wei115 (ㄎㄎ)   2019-02-27 13:53:00
缓冲区日常,特别是格式化和非格式化特别容易遇到
作者: x246libra (楓)   2019-02-27 14:11:00
原来有这种问题,之前没特别注意,谢谢发文者
作者: hunandy14 (Charlott.HonG)   2019-02-27 17:18:00
记得是要把sancf 还什么放到 while 内就好了阿想起来了 好像是 file 才是XDD
作者: koka813 (shift)   2019-03-01 15:49:00
真的是笑了
作者: HanaYukii (ShioRin)   2019-03-07 01:41:00
cin不会
作者: a0928855286 (Alan君)   2019-03-12 01:14:00
那要怎么解决啊?
作者: jxzhe   2019-03-16 17:49:00

Links booklink

Contact Us: admin [ a t ] ucptt.com