printf("%s",str);
return 0;
}
输入:I love you!
输出:scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束
该 scanf 函数,scanf 函数仅在每一个数据域均有数据,并按回车后结束)。
“
” “
”
① 遇空格、 回车 、 跳格 键。
② 遇宽度结束。
③ 遇非法输入。
所以,上述程序并不能达到预期目的,scanf()扫描到"I"后面的空格就认为对 str 的赋
值结束,并忽略后面的"love you!".这里要注意是"love you!"还在键盘缓冲区(关于这个问
题,网上我所见的说法都是如此,但是,我经过调试发现,其实这时缓冲区字符串首尾
指针已经相等了,也就是说缓冲区清空了,scanf()函数应该只是扫描 stdin 流,这个残存
信息是在 stdin 中)。我们改动一下上面的程序来验证一下:
#include
int main()
{
char str[80];
char str1[80];
char str2[80];
scanf("%s",str);
printf("%s",str);
sleep(5);
scanf("%s",str1);
scanf("%s",str2);
printf("/n%s",str1);
printf("/n%s",str2);
return 0;
}