输入问题

P1320 压缩技术(续集版)

Ava_gossipbf @ 2022-03-17 14:27:10

其他代码相同的情况下,用 while(~scanf"%c",&temp) 与 while(cin>>temp),上面用scanf的错误,下面用cin的全正确...请问有大佬知道为什么吗


by sw2022 @ 2022-03-17 15:09:55

@Ava_gossipbf 用scanf得写成:


while(scanf("%c",&temp)==1)

by sw2022 @ 2022-03-17 15:10:59

您这加了按位非是什么意思


by panyanppyy @ 2022-03-17 15:19:29

@Ava_gossipbf

scanf("%c",&c)会读入行末回车,cin>>c会跳过回车和空格。


by panyanppyy @ 2022-03-17 15:21:19

@sw2022_ 当读入出错时(没有读入)scanf会返回 EOF 也就是 -1


by sw2022 @ 2022-03-17 15:26:27

@panyanppyy 可是我认知中只有这三种写法:



1.while(cin>>temp)

2.while(scanf("%c",&temp))

3.while(scanf("%c",&temp)==1)

自测可以加上 &&c!=EOF ,文末结束符用Ctrl+Z读入,也可以不加(不影响while其他读入)

by panyanppyy @ 2022-03-17 15:27:24

@sw2022_ 自己试试不就知道了


by sw2022 @ 2022-03-17 15:29:57

好像是返回了EOF=-1,~(-1)=0.orz


by sw2022 @ 2022-03-17 15:30:44

ASCII为负数的符号……


by Ava_gossipbf @ 2022-03-22 21:16:05

@panyanppyy 感谢大佬%%%%


by Ava_gossipbf @ 2022-03-22 21:16:22

@sw2022_ 感谢大佬%%%%


| 下一页