接上一篇printf()函数
为什么需要输出控制符?
1. 01组成的代码可以表示数据也可以表示指令,要看怎么解读。输出控制符告诉怎么解读;
2. 如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出,就会有不同的输出结果;
--------------------------------------------------------------------------------------------------------------------------------
scanf()——通过键盘将数据输入到变量中
三种用法:
用法一: scanf("输入控制符",输入参数);
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。
/*
2022年6月7日
功能:从键盘输入一个值再从屏幕中显示出来
目的:scanf函数的用法之不含非输入控制符
*/
#include <stdio.h>
int main(void)
{
int i;
scanf("%d",&i); /*&是取地址符,&i 表示i的地址。操作系统接收键盘数据
都将其当成字符接收,%d的意思是将从键盘接收的字符转化成十进制 */
printf("i = %d\n",i);
return 0;
}
用法二: scanf("非输入控制符 输入控制符",输入参数);
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。且非输入控制符必须原样输入
/*
2022年6月7日
功能:从键盘输入一个值再从屏幕中显示出来
目的:scanf用法之含有非输入控制符
*/
#include <stdio.h>
int main(void)
{
int i;
scanf("m%d",&i); //m是非输入控制符
printf("i = %d\n",i);
return 0;
}
输入:123
输出:i = -858993460
输入:m123
输出:i = 123
输入:m123n
输出:i = 123
注意: 一般不写非输入控制符!
用法三: scanf("输入控制符1 输入控制符2 输入控制符3",输入参数1,输入参数2,输入参数3);
功能:
/*
2022年6月7日
功能:给多个变量键盘赋值,并从屏幕中显示出来
目的:scanf用法之一次给多个变量键盘赋值
*/
#include <stdio.h>
int main(void)
{
int i, j, k;
scanf("%d %d %d", &i, &j, &k);
printf("i = %d,j = %d,k = %d\n", i, j, k);
return 0;
}
---------------------------------------------------------------------------------------------------------------------------------
如何使用scanf编写出高质量代码?
1. 使用scanf之前最好先使用printf提示用户以什么样的方式来输入;
2. scanf中尽量不要使用非输入控制符,尤其不要使用\n;
3. 应该编写代码对用户的非法输入做适当的处理,如下例:
当这种情况时,i读取到合法字符123,会自动让j读取,是非法字符就会输出一个垃圾值。所以应该编一个可以把之前用户遗留的垃圾值全部清除掉的代码。
当加了这两行代码后,即使输入123m,程序也不会停止。可以自动丢弃前面的垃圾非法数值