c语言里,scanf("%s",chars); 如果我一直输入空格,它就一直不会读取是吗?(直到我输入一个非空字符)

如题所述

c语言里,scanf("%s",chars); 如果一直输入空格,它就一直读取不到chars数组的内容。
scanf()是从第一个非空白字符开始读入的(scanf根本不读入空格当然是从第一个非空格读入),详细地说,当我们输入数据时,在按下回车键前输入的数据都储存在缓冲区,按下回车键后,会把数据及换行符一起传送到标准输入流中,scanf就是从标准输入流中读取数据,它会在其中查找,跳过空白符(空格 换行符 制表符)(scanf不能读取空白符的原因也是如此)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-03-17
对的,读取到空格就结束了
解决方案:
#include <stdio.h>
int main()
{
char str[80];

scanf("%[^\n]",str); //读到'\n'结束读取
printf("%s",str);
return 0;
}追问

scanf("%[^\n]",str); '\n'我知道是换行的意思,""里面的[]和^代表什么?
还有我知道它读取到空格就停止了,我的意思是刚开始什么都没输的时候,如果一直输空格,这个空格其实它是不会读取的是吗?

追答

%[^\n]s是正则表达式

表示接受除了\n以外的字符
如果一开始一直输空格,也会读取,知道遇到\n

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网