[C语言] 关于scanf(“%[^\n]%*c“,str) 保留空格读入字符串

(scanf("%s",buff)不能连续读入含空格的字符串)
如果直接输入回车会出现乱码,并且缓存区清理不掉,请问这是什么原因
这是我的代码:

img

这是输出结果(一直在死循环输出乱码):

img

但是分开scanf这个内部则不会出现死循环的问题

img

这是分开后的输出结果:

img

你这是什么奇怪的写法

这是scanf+正则表达式的使用,目的是连续读入含空格的字符串如“Hello[空格]World”,scanf("%s",buff)只能读入Hello(遇空格结束),如果不清楚scanf(“%[^\n]%*c“,str)用法的可以自己搜一下,当然如果有更好的纳非空白字符(空格、回车、制表符等)的输入方法也可以说,无意义的回答/讨论就不要再发了

%*c是个啥,%c是char,%*根本啥都不是
scanf不支持正则表达式