就是scanf()函数、printf()函数、getchar()函数和putchar()函数,它们都要引入stdio.h
printf()函数
日常使用
# include <stdio.h>
void main {
printf("hello world!");
}
结果就是hello world!
如果我要换行输出
先看看这样可不可以
# include <stdio.h>
void main {
printf("hello ");
printf("world!");
}
但是,它的结果还是hello world!
很显然,这样是不行的。
这时,我们得要用\n
# include <stdio.h>
void main {
printf("hello\nworld!");
}
结果就是
hello world!
要打印 Tab(跳位)呢?用\t
# include <stdio.h>
void main {
printf("hello\tworld!");
}
结果就是
hello world!
要打印%、\呢?
将他们双写。
为什么这两个要双写呢?
看下面列表
| 字元 | 说明 |
|---|---|
| \ | 转义字元,常用于双引号、\n 等要跳脱的序列上,放于转义的东西之前 |
| % | 它和 d、f、c、s 等相结合,打印出变量。 |
那我要打印某个变量的数值该怎么办?
其实可以总结为以下的东西
| 符号 | 作用 |
|---|---|
| %d | 可以联想到dec,十进制有符号整数 |
| %ld | 可以联想到long dec,十进制有符号长整数 |
| %x, %X | 可以联想到hex,以十六进制表示的整数 |
| %lx | 可以联想到long hex,以十六进制表示的长整数 |
| %o | 可以联想到oct,以八进制数形式输出整数 |
| %lo | 可以联想到long oct,以八进制数形式输出长整数 |
| %f | 单精度浮点数 |
| %lf | 双精度浮点数 |
| %e | 以指数形式输出的浮点数 |
| %le | 以指数形式输出的浮点数 |
| %s | 字符串 |
| %c | 字符 |
| %u | 以十进制表示无符号整数 |
| %g | 自动选择合适的表示法 |
对于像%n.mf这样的表述,我们可以这样理解。
- n表示输出宽度,当n大于0,向右缩进n个空格,如果字符数>n,按实际位数输出;当n小于0,向左缩进n个空格,也仅仅只是对空格起作用。
- m是用于调整显示小数点后m位。
然后,代码要这样写
基本格式:printf("<文本><格式化规定符>",<变量>);
#include <stdio.h>
int main(){
char text = 'a';
printf("%c",text);
return 0;
}
scanf()函数
调用形式
scanf("<格式说明字符串>",<变量地址>);
一般情况下的用法
int number = 0;
scanf("%d", &number);
进阶情况下的用法
int a = 0;
int b = 0;
scanf("%d %d", &a,&b);
在命令行中,你就得要输入类似于1 1才可以满足,同时你就一下子赋值了两个变量
逆天的情况
出现以下两种情况:
int a = 0;
int b = 0;
scanf("%d %d\n", &a,&b);
int a = 0;
int b = 0;
scanf("%d %d ", &a,&b);
在命令行中,你就得要输入类似于1 1,然后还要再输入一个值才可以满足它。
总之,只要出现在
scanf里面,你就得要面临着输入东西的结果,如果没输入够,它就不会停。
那如果我要输入这样的东西呢?
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
我们都知道scanf函数有一个日常,就是会吞掉空格、回车和制表符。
但是我们写scanf("%d %d ", &a,&b);时候就不会,这是为什么?
因为这个时候,它把空格当成了要输入的部分。
所以,我们只要把空格当成要输入的部分就好了
看下面代码
#include <stdio.h>
int main() {
char ch;
int a[10] = {0};
for(int i = 0; i < 10; i++) {
scanf("%d%c", &a[i], &ch);
}
}
这样我们就可以让scanf认为空格是要输入的东西了,到时候它就只认回车了。
危险操作
int a;
scanf("%d",a);
一定在注入的变量之前加
&
输入一串文本
无论输入,还是输出,都要用
%s
#include <stdio.h>
int main () {
char c[100];
scanf("%s",&c);
printf("%s\n",c);
}
可输入不包含空格和回车的字符串,一旦输入空格,则空格之后的不存在。
输入浮点数
一般情况下,是这样的
scanf("%lf",&value);
此时,这个value的类型是double
也可以这样
scanf("%f",&value);
此时,这个value的类型是float。
其实,对于printf来说,%lf和%f的区别并不是很大,但还是要做到一一对应——double时,用%lf,float时,用%f。但如果是scanf那就不一样了,对于double类型的变量用%f会发生warning,对于float类型的变量用%lf也会发生warning。
本文来自博客园,作者:Mryan2005,转载请注明原文链接:https://www.cnblogs.com/Mryan2005/p/17872805.html
浙公网安备 33010602011771号