1. I/O
为什么使用库函数:
在linux中使用系统调用进行程序设计时,是由linux内核实现的,不利于移植!
由于多数平台都是兼容c的,而用基于c的库函数进行编程,可提高了可移植性!
流:
文件指针:
2.函数的学习方法
3.1打开文件
3.1.1 函数名
fopen
3.1.2 函数原形
FILE *fopen(const char *path,const char*mode);
3.1.3 函数功能
打开文件
3.1.4 所属头文件
#include<stdio.h>
3.1.5 返回值
成功:返回文件指针
失败:返回null
3.1.6 参数说明
path:指定打开的文件名字(含路径)
mode:文件打开模式
r 只读方式打开一个文本文件
rb 只读方式打开一个二进制文件
w 只写方式打开一个文本文件
wb 只写方式打开一个二进制文件
a 追加方式打开一个文本文件
ab 追加方式打开一个二进制文件
r+ 可读可写方式打开一个文本文件
rb+ 可读可写方式打开一个二进制文件
w+ 可读可写方式创建一个文本文件
wb+ 可读可写方式生成一个二进制文件
a+ 可读可写追加方式打开一个文本文件
ab+ 可读可写方式追加一个二进制文件
linux open与fopen的比较:点击打开链接
3.2关闭文件
3.2.1 函数名
fclose
3.2.2 函数原形
int fclose(FILE*fp)
3.2.3 函数功能
关闭文件
3.2.4 所属头文件
#include<stdio.h>
3.2.5 返回值
成功:0
失败:EOF
3.2.6 参数说明
fp:待闭的文件指针
3.3读文件
3.3.1 函数名
fread
3.3.2 函数原形
size_t fread(void *ptr,size_t size,size_tnmemb,FILE *fp)
3.3.3 函数功能
从文件中读取数据
读取fp文件,读取nmemb块,每块有size个数据,将数据保存到ptr中.
3.3.4 所属头文件
#include<stdio.h>
3.3.5 返回值
成功:返回成功读取到的数据量
失败:返回0
3.3.6 参数说明
stream:指向要读取的文件
ptr:指向读取出来后的数据的保存位置
nmemb:读取的数据块数
size:每块数据的大小
3.4写文件
3.4.1 函数名
fwrite
3.4.2 函数原形
size_t fwrite(const void*ptr,size_tsize,size_t nmemb,FILE* stream)
3.4.3 函数功能
向文件中写入数据
3.4.4 所属头文件
#include<stdio.h>
3.4.5 返回值
成功:返回成功写入的数据量
失败:返回0
3.4.6 参数说明
stream:要写入数据的文件的指针
ptr:存放要写入文件的数据
size:每块数据的大小
nmemb:数据的块数
3.5定位文件
3.5.1 函数名
fseek
3.5.2 函数原形
int fseek(FILE *stream,long offset,intwhence)
3.5.3 函数功能
设置文件的位置指针
3.5.4 所属头文件
#include<stdio.h>
3.5.5 返回值
成功:返回0
失败:返回-1
3.5.6 参数说明
stream: 要定位文件的描述符
offset:偏移量
whence:
1.如果 whence是 SEEK_SET ,文件偏移量将被设置为 offset。
2. 如果 whence 是 SEEK_CUR ,文件偏移量将被设置为 cfo 加上 offset,
offset 可以为正也可以为负。
offset为负时,偏移量从当前位置向开头方向移动offset位
offset为正时,偏移量从当前位置向结尾方向移动offset位:
3. 如果 whence 是 SEEK_END ,文件偏移量将被设置为文件长度加上 offset,
offset 可以为正也可以为负。
offset为负时,偏移量从结尾位置向开头方向移动offset位
offset为正时,偏移量从结尾位置向结尾方向移动offset位