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_ 感谢大佬%%%%