scanf():通过键盘将数据输入到变量中,初级使用中一般有以下几种用法及常见错误:
用法一:scanf("输入控制符",输入参数);
功能:将从键盘输入的字符(字符!字符!字符!)转化为输入控制符所规定格式的数据,然后存入“输入参数”的内存空间中(取地址符的意义)
#include
int main()
{
int i;
scanf("%d",&i);
printf("i=%d\n",i);
return 0;
}
/*vs2010测试结果
----------------------------------------
123
i=123
m123
i=-858993460
123x
i=123
----------------------------------------
*/
用法二:scanf("非输入控制符 输入控制符",输入参数);
功能:将从键盘输入的字符(字符!字符!字符!)转化为输入控制符所规定格式的数据,然后存入“输入参数”的内存空间中(取地址符的意义),但在输入控制符前加了非输入控制符
【注意】键盘输入时,非输入控制符必须原样输入
#include
int main()
{
int i;
scanf("m%d",&i);
printf("i=%d\n",i);
return 0;
}
/*vs2010测试结果
----------------------------------------
123
i=-858993460
m123
i=123
m123x
i=123
----------------------------------------
*/
用法三:一次给多个变量键盘赋值
#include
int main()
{
int i,j;
scanf("%d %d",&i,&j);
printf("i=%d,j=%d\n",i,j);
return 0;
}
/*vs2010测试结果
----------------------------------------
12 34
i=12,j=34
12
34
i=12,j=34
----------------------------------------
*/
面对用户不知如何正确输入多个值时,以上代码可进行以下改进,及用printf加一行输入样式提示信息
#include
int main()
{
int i,j;
printf("请输入两个数中间以空格隔开:\n"); //提示行
scanf("%d %d",&i,&j);
printf("i=%d,j=%d\n",i,j);
return 0;
}
/*vs2010测试结果
----------------------------------------
请输入两个数中间以空格隔开:
12 34
i=12,j=34
----------------------------------------
*/
用法四:非法输入与用while屏蔽非法输入
//在输入多个变量值时,输入i时会误碰键盘导致非法输入,如以下代码,字符12输入后,其后面的字符均为非法输入,若不进行处理,会将非法输入赋值给变量j
#include
int main()
{
int i;
int j;
scanf("%d",&i);
printf("i=%d\n",i);
scanf("%d",&j);
printf("j=%d\n",j);
return 0;
}
/*vs2010测试结果
--------------------------------------------------------
12ffghgdfhdf
i=12
j=-858993460
--------------------------------------------------------
*/
将以上代码改进如下,在代码中间加入一段while循环语句,可解决i的误输入问题
#include
int main()
{
int i;
char ch;
int j;
scanf("%d",&i);
printf("i=%d\n",i);
while((ch=getchar())!='\n') //屏蔽i输入时因误碰键盘导致的非法输入
continue;
scanf("%d",&j);
printf("j=%d\n",j);
return 0;
}
*vs2010测试结果
--------------------------------------------------------
12sfsdgsgdsgsdfgsdfaf34
i=12
34
j=34
--------------------------------------------------------
*/
【小结】如何使用scanf编写出高质量代码
1.使用scanf之前最好先使用printf提示用户以何种形式输入
2.scanf中尽量不要使用非输入控制符,尤其是'\n'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)