MOOC——C语言13:文件


1.I/O输入输出
printf
%[flags][width][.prec][h|l]type
flags(标志):- 左对齐,(space) 正数留空,0 0填充
width(宽度):number 最小字符数,.number 小数点后的位数,* 下一个参数是字符数,.* 下一个参数是小数点后的位数
h|L (类型修饰):hh 单个字节,h short,L long/long double,LL long long
type (类型): d/i,u,o,x/X,e,f,g/G,a/A,c,s,p,n


scanf
%[flag]type
类型中不是d是i的话,也是读入整数,可能是十进制或八进制十六进制。

printf和scanf有返回值。


2.文件输入输出:
可用>(输出到文件)和<(从文件输入到程序)重定向。
用FILE:
FILE *fp = fopen("file","r");
if(fp){
    fscanf(fp,...);
    fprintf(....);
    fclose(fp);
}


fopen有两个参数都是字符串,一个是文件名,一个是打开模式
r 只读
r+ 读写,从文件头开始
w 只写,不存在则新建,存在则清空
w+ 读写,不存在则新建,存在则清空
a 追加,不存在则新建,存在则从文件尾开始写
.x 只新建,如果文件已存在则不能打开


3.二进制文件:
所有的文件最终都是二进制的。
二进制读写:
size_t fread(void *restrict ptr,size_t size,size_t nitems,FILE *restrict stream);
size_t fwrite(const void *restrict ptr,size_t size,size_t nitems,FILE *restrict stream);
返回的是成功读写的字节数。




附:位运算
C按位运算的运算符:
& 按位 与
| 按位 或
~ 按位取反
^ 按位异或 
<< 左移
>> 右移
异或,如果两个位相等,结果为0,不相等,结果为1.
对同一个变量用同一个值异或两次,等于原值。
这样好玩,可以做个简单加密。用同一个值异或一次,加密得到乱七八糟的东西,再


异或一次,即解密。


位段:(记得菜鸟程序员里就有过关于位段的问答,不过那上面叫法是位域)
把一个int的若干位组合成一个结构:
struct U{
    unsigned int leading : 3; //表示leading占了3位
    unsigned int Flag : 1;
};
可以直接用位段的成员名称来访问,比移位、与、或方便
不具有可移植性
当所需的位超过一个int时会采用多个int.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值