printf & scanf格式化输入输出
printf
%[flags][width][.prec][hlL]type
flags | 含义 |
---|---|
- | 左对齐(默认右对齐) |
+ | 在前面放+(一般用来表示正数) |
(space) | 正数留空 |
0 | 用0填充 |
#include <stdio.h>
int main()
{
printf("%09d\n",666);
printf("%- d\n",666);
return 0;
}
width或prec | 含义 |
---|---|
number | 最小字符数 |
* | 下一个参数是字符数 |
.number | 小数点后的位数 |
.* | 下一个参数是小数点后的位数 |
#include <stdio.h>
int main()
{
printf("%09.3d\n",666);
printf("%*.*d\n",9,3,666);
return 0;
}
[hlL]类型修饰符 | 含义 |
---|---|
hh | 单个字节 |
h | short |
l | long |
ll | long long |
L | long double |
type | 用于 |
---|---|
i/d | int |
u | unsigned int |
o | 八进制 |
x(X) | 十六进制(字母部分大写) |
a、A | 十六进制浮点 |
f、F | float,6 |
g、G | float |
e、E | 指数 |
c | char |
s | 字符串 |
p | 指针 |
n | 读入/写出的个数 |
#include <stdio.h>
int main()
{
int num;
printf("%djj%n\n",666,&num);
printf("%d\n",num);
return 1;
}
scanf
%[flags]type
flag | 含义 |
---|---|
* | 跳过 |
数字 | 最大字符数 |
hh | char |
h | short |
l | long/double |
ll | longlong |
L | long double |
type | 含义 |
---|---|
d | int |
i | 整数(各种进制) |
u | unsigned int |
o | 八进制 |
x | 十六进制 |
a,e,f,g | float |
c | char |
s | 字符串 |
p | 指针 |
[…] | 所允许的字符 |
scanf和printf的返回值
#include <stdio.h>
int main()
{
int num;
int i1 = scanf("%d",&num);
int i2 = printf("%d\n",num);
printf("%d:%d\n",i1,i2);
return 0;
}
printf的字符数包括后面的\n
文件输入输出
重定向>.<
假如我们用的是scanf和printf做输入输出,则可以使用重定向进行文件的读写
#include <stdio.h>
int main()
{
int num;
int i;
for (i=0;i<3;i++){
scanf("%d",&num);
printf("%d\n",num);
}
return 0;
}
FILE
FILE* fopen(const char * restrict path,const char * restrict mode) 打开文件
int fclose(FILE * stream)
fscanf(FILE*,…) 文件读
fprintf(FILE*,…) 文件写
以只读方式打开文件
#include <stdio.h>
int main()
{
FILE* fp = fopen("123.in","r");
if (fp){
int num;
fscanf(fp,"%d",&num);
printf("%d\n",num);
fclose(fp);
} else {
printf("file is not exist\n");
}
return 0;
}
fopen模式参数 | 介绍 |
---|---|
r | 只读方式打开 |
r+ | 读写方式打开,从文件头开始 |
w | 只写方式打开,不存在就新建,存在则清空 |
w+ | 读写方式打开,不存在就新建,存在则清空 |
a | 打开追加,不存在就新建,存在则从文末添加 |
…x | 只新建,如果文件已存在则不能打开 |