我们都知道scanf与printf是一对共同应用的函数,包含在头文件stdio.h下,今天我来写一下我理解的scanf函数的应用。
scanf函数是输入函数,输入的变量储存在缓存当中,等待像printf这样的函数来调用。在scanf函数中,格式字符串里面有多少个占位符,就有多少个变量。
scanf函数的输入
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, j;
float m, n;
scanf("%d%d%f%f", &i, &j, &m, &n);
printf("%d--%d--%f--%f",i,j,m,n);
return 0;
}
不难发现scanf的数字的输入之间需要空格。
并且它会忽略首位的空格,从有效字符开始读取数据。
scanf函数的返回值
scanf函数的返回值是一个整数,表示读取到的变量的个数
读取到一个数值则返回1,零个则是0
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int d = 0;
int c = scanf("%d %d %d", &a, &b,&d);
printf("%d``%d``%d\n", a, b, d);
printf("%d", c);
return 0;
}
输入ctrl+z会得到零的返回值
c的返回值为-1,表示出现错误
取消一个d后c的返回值为2
scanf函数的占位符
跟printf函数差不多,但要注意的是,除了“%c”以外的占位符读取时都会自动跳过首位的空白字符,“%c”不忽略,但“ %c”即c前面加一个空格时就会忽略。
%s遇到空格直接break,即%s有风险,使用需谨慎。%【n】s其中【n】表示一个数字,为读取字符串的最大长度,多出的将会舍弃
赋值忽略符号*
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%*c%d%*c%d", &a, &b, &c);
return 0;
}
即无论中间用什么符号代替,最终输入都可以是printf函数所输出,不需要非得打空格
今天的学习分享就到这里,欢迎大家交流学习