#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'为止也可以实现类似功能。就是麻烦了些。
虽然有人说在大型程序设计中永远不要使用scanf(),......
阅读全文