scanf的一些问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:23:06
#include<stdio.h>
main()
{
int str[80];
scanf("%[^#]",str);
puts(str);
}
一个简单的函数,在运行的过程中,输入了
12
12
123Z
13
13
123#
显示结果
13
13
123
于是有点不明白,当遇到非法输入的时候,函数不应该停止吗?但没有跳出运行界面,知道输入#.那么是不是SCANF运行了两次?
还有,对于键盘缓存区不是很了解,是不是输入连续的数据后,按下回车,才会发送数据,而在写的过程中,并没有给数组赋值。那么回车占不占用缓存区?最好能举一个例子说明

不会吧
1.这麼一点应该不会缓冲区满吧
2.正则表达式是读入非#字符阿,所以应该是
12
12
123Z
13
13
123

VC6实验了,是好的

加上fflush(stdout);到puts前