慎用scanf.doc
文本预览下载声明
1 本意:接收字符串.
写成代码:void main()
{
char *str;
scanf(%s,str);
printf(string is: %s\n,str);
}
符合愿意代码:char *str=NULL;
str=malloc(128*sizeof(char) );
scanf( %s\n, str );
点评:指针需要你手动给它分配空间,并手动指向该空间如果没有,指针指向哪里,是不确定的
也就是说,你scanf得到的数据存放到哪里是不一定的因此,偶尔有运行正常是你运气好
错误才是正常的
-----------------------------------------------------------------------
2 本意:接收输入的a,b值.
写成代码:int a,b;
scanf(%d%d,a,b);
符合愿意代码:int a,b;
scanf(%d%d,a,b);
点评:这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将
a、b的值存进去。“a”指a在内存中的地址。
------------------------------------------------------------------------
3 本意:在Input字符串后输入数值.
写成代码:int num;
Scanf(Input %d, num);
实际应输入:Input 1234 或者 Input1234
符合愿意代码:int num;
printf(Input;
scanf(%d,num);
------------------------------------------------------------------------
4 本意:接收填入的数据.
写成代码:#include stdio.h
main()
{
int num;
printf(please input the students score: ;
scanf(%d,num);
if((num0)||(num100))
{
printf(The score put isnt fine. please run and input again.;
}
else if(num90)
{
printf(The grade is A.;
}
else if((num80)(num90))
{
printf(..................
.............
}
..............
}
实际应输入:这个程序是没错,不过如果有人要存心捣乱, 输入时不是输入数字,而是其
他的什么字符,那么congratulations,这个程序崩溃掉了.
符合愿意代码:#include stdio.h
main()
{
显示全部