因为:
scanf("%s",str); 遇到空格就停止接收后面的字符。
scanf("%s", str, 10); 不能接收带空格的字符串输入,虽然它的指定长度是10, 但是遇到空格时即使没有满10个字符它也自动结束输入了。
所以:
1.用 gets() 可以读取空格, 直到回车才会结束输入
char str[80];
gets(str); //可以读取空格, 回车才会结束输入
2.使用"%[^\n]"可以接收输入带空格的字符串,直到回车才结束接收
char str[10];
scanf("%[^\n]",str); //可以读取空格,回车结束输入
附:正则中的[xxx],%[abc]表示字符组合包括a、b和c,如果遇到这三个字符之外的字符,则停止接收。%[^abc]代表字符组合为abc以外的所有字符,至于横杠是否用于指定某个范围的字符%[a-z],则因编译器而异。
--------------------------------
2019-10-25 16:45:51 第一次改
java控制台输入带空格的字符串
java控制台输入带空格的字符串 Scanner sc = new Scanner(System.in); String str = sc.nextLine();
C从控制台(stdin)输入带空格的字符串到字符数组中
用scanf("%s",array); 的话遇到空格就停止接收后面的字符了,那怎么才能接收带空格的字符串呢? 1.用 gets() ,它可以接收带