scanf、printf、getchar函数的使用
- printf函数
- scanf函数
- getchar函数
printf函数
在C语言中使用printf函数进行格式化的输出,它是一个可变的参数函数,参数的个数不定。在前面我们已经学习了各个类型的打印格式,这里就对最常见的输出格式进行介绍。
%d
:表示对整数进行输出
%c
:表示对字符型的进行输出
%p
:表示对指针类型进行输出
%s
:表示对字符串类型进行输出
%f
:表示对浮点型进行输出
具体的我们通过代码进行说明:
int main(){
int a = 110;
char b = 'c';
float c = 5.2;
int *p = &a;
// 字符串最后一个为'\0'
char arr[5] = {'c','b','\0','d'};
printf("%d\n",a);
printf("%c\n",b);
printf("%f\n",c);
// 打印指针的地址
printf("%p\n",p);
printf("%s",&arr);
return 0;
}
以上字符串和指针类型的数据后面会进行详细的讲解这里就不过多的说明,只需要知道有这一种输出格式即可。
有时候对于浮点型我们希望输出的格式保留小数位,或者输出的语句进行对其,这时候我们就得进行相应的格式变换。例如:
int main(){
float a = 4.55555;
// 我们希望浮点数输出10位并保留小数点后3位
printf("%10.3f",a);
return 0;
}
它的输出结果为:
此时我们发现它的前面有空格5个,这是因为我们要求函数输出10位数,小数点也占位数,前面的空格位数加上4.556五位刚好是十位。
当然这种格式化输出还有很多,这里就对它的格式进行说明一下:”%【+或者-数字】【输出长度】.【保留位数】【类型】“
。用【】括起来的都是可选的。
+或-数字
表示右对齐和左对齐多少位,如:”%+3d“表示右对齐3位。
输出长度
:表示输出位数的长度,不够的加空格,长的删掉。
保留位数
:表示保留小数点后几位。
类型
:表示输出的数据类型。
scanf函数
scanf函数是C语言当中的输入函数,它的作用是读取我们从键盘上输入字符的地址。然后将以给定的格式进行输入。格式如下:scanf("%d",&a)
,在键盘上输入一个整数到缓存区
,然后scanf从缓存区中获取输入的字符,直至缓存区中为空。
代码如下:
int main(){
int x;
scanf("%d",&x);
char y;
scanf("%c", &y);
return 0;
}
getchar函数
用于获取一个可用的字符,并返回。
例如:
int main(){
char ch;
ch = getchar();
printf("%c\n", ch);
}
运行时,会让你输入一个字符,getchar()函数进行获取并进行返回。
下面我们来看一个更高级的用法,当scanf函数与getchar联用时会有什么妙处:
我们发现只有两个函数进行输出,这是因为scanf是获取缓冲区中的字符,当我们多个scanf联用时就得特别的注意。
注意: 多个scanf函数联用时,如果scanf运行前是除了输入字符型其他的类型,则会将缓冲区中的字符全部清除;如果运行前是字符型的输入,则缓冲区中不会进行清楚,当我们按下回车键时,scanf会自定的捕获这个回车键,从而不会进行下一步的输出了。
如果我们要使这三个scanf函数全部都运行,应该怎么去处理呢?这时我们的getchar函数就该发挥作用,让getchar函数去捕获输入的这个回车字符,从而使他进行下一步的运行。代码如下:
int main(){
int x;
scanf("%d",&x);
char y;
scanf("%c", &y);
// 用于捕获空格
getchar();
int a, b;
// 进行多个值的获取,输入格式必须更自己定义的格式一致
// 输入一个数时加一个空格在输入一个数
scanf("%d %d", &a, &b);
return 0;
}
他的输出为:
这时发现我们的3个scanf函数都可运行了,上面的问题便解决了。这里特别要注意的是:一个scanf在进行多个值的输入时,必须按照自己定义的格式进行输入,并且在格式中不能包括转义字符,如'\n'
等。