为什么用strlen()不能算出空格

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:10:21
#include<stdio.h>
main()
{
char a[50];
scanf("%s",a);
printf("%d",strlen(a));
}

我要是输入"123 abc"
结果是3。
为什么空格后的没算。
要是我想算上空后的怎么办?

问题出在scanf()。
scanf()开始读取输入以后,会在遇到的第一个空白字符空格(blank)、制表符(tab)或者换行符(newline)处停止读取。
可以使用 scanf("%[^\n]s",a); 来解决问题。其中“%[^\n]”是说明只有在读入回车符时才终止读取。
用getchar()在一个循环中不断读取字符缓冲区中的字符直到'\n'为止也可以实现类似功能。就是麻烦了些。

空格算分隔符了吧

用getchar获取每个字符,判断是否是回车符,是的话就算字符串结束。再算组装起来的字符串。