scanf进行字符串输入时为什么到空格键就结束了

如这种形式
#include<stdio.h>
void main
{
char a[1000];
int i;
scanf("%s",a);
for(i=0;i<=99;i++)
printf("%c\n",a[i]);
}
输入I is boy时显示结果为I而后面却没有了
为什么啊?

scanf里面的%s,遇到空格结束,并把输入空格前的所有字符串存入到a里面,如果要读取空格的话要用gets
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-08
scanf函数在接收字符串时就是这么安排的——遇到空格或回车就认为前面的输入已经完成且有效!本回答被网友采纳
第2个回答  2010-04-25
char 在内存中只占用一个字节 所以只能保存一个字母 当然输出也只是一个 这与空格没关系
第3个回答  2010-04-25
再用scanf接收时,空格和回车是不合法输入,表示完成接收,你可以用gets(a);来接收,用puts(a)来输出,你看下书,书上有,本回答被提问者采纳