C语言scanf的学习

来源:互联网 发布:边唱边录的软件 编辑:程序博客网 时间:2024/05/21 08:02

最初学C语言时,scanf和sprintf是最先学习的了,当时没有深入的学习,后来也很久没有用过C了,笔试的时候才发现自己真的是什么都忘完了。现在重新学习:

简介:格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的指定格式。

scanf函数会在每一个数据域均有数据,并按回车后结束

用法: int scanf(char *format[,argument,...]); int scanf("格式控制符",地址列表)

常用格式控制符:

%c                 读入一个字符
%d                 读入十进制整数
%i                 读入十进制,八进制,十六进制整数
%o                 读入八进制整数
%x                 读入十六进制整数
%c                 读入一个字符
%s                 读入一个字符串
%f                 读入一个浮点数

%n                 至此已读入值的等价字符数
%[]                扫描字符集合

例子:

1. 整型格式:
   (1)scanf("%d%d%d",&a,&b,&c);

   (2)scanf("%d   %d   %d",&a,&b,&c);

   (3)scanf("%d,%d,%d",&a,&b,&c);

(1)怎么输入使得可以把三个数分割开来分别给变量a,b,c:空格,tab建,回车分割,可以是一个或多个。

(2)第二个跟第一相同,会自动忽略格式控制符中的空白符

(3)若格式控制符中含有非空白字符,这时输入必须在对应位置输入该非空白字符否则会出错:

例如,若输入1,2  2,则会把1,2分别付给a,b变量,但是c的值就没有。

2.字符格式:

   (1)scanf("%c%c%c",&a,&b,&c); ------空格,tab键,回车都会认为是字符并赋值给后面的变量,每个字符是相互分开的

   (2)scanf("%c  %c   %c",&a,&b,&c); ----输入时会忽略空格,tab,回车,此时空格,tab和回车是作为分隔符的

   (3)scanf("%c,%c,%c",&a,&b,&c);----输入时必须输入逗号,否则会出错,会忽略空格,tab,回车

3.字符串格式

用字符指针或字符数组来存储字符串:

char s1[];或char * s2;

scanf(“%s%s”,s1,s2);----以空格,回车或tab分隔,即使格式控制符用,隔开也是以空格做分隔符

scanf(“%s,%s”,s1,s2);----依然是以空格,回车或tab分隔,但是只会给s1赋值