本文共 1021 字,大约阅读时间需要 3 分钟。
每一个打开的文件在内存里面都有个结构体来保存文件的信息:大小,位置,修改时间,权限等等。这个结构体是系统定义:FILE
typedef struct{ ...;...;}FILE;文件指针就是 FILE 结构体的指针。
FILE* fd;文件的操作:
FILE fopen(const char path, const char *mode); 打开一个文件并把文件对应的结构体变量地址作为返回值。失败返回NULL。path:文件名字的字符串(可以包含路径)mode:访问文件的方式“r” 只读(文件已存在)“w” 只写(文件可以不存在,存在只会覆盖)“a” 追加(文件可以不存在,存在就在文件的末尾增加新的数据)“r+” 读和写(文件的头部开始)“w+”读写(覆盖)“a+”读写(追加)二进制文件:
“rb” 只读“wb”只写“ab”追加“rb+” / "r+b" 读和写(文件的头部开始)“wb+” / "w+b" 读写(覆盖)“ab+” / "a+b" 读写(追加)int fclose(FILE* fd) 关闭一个文件,形参为想要关闭的那个文件的文件指针,返回0表示成功,-1表示失败。
int fputc(int c , FILE* fd) 将一个字符写到文件中,失败返回EOF
int fgetc(FILE* fd);从文件中读一个字符出来
excep:
#include <stdio.h>
int main(int argc,char argv[]){ char tmp;if(argc!=3){ printf("%s 源文件 目标文件",argv[0]);}else if(argc==3){ FILE fd_1 = fopen(argv[1],"r");if(fd_1){ FILE* fd_2 = fopen(argv[2],"w");if(fd_2){ while(tmp != EOF)//循环读取源文件中的数据{ tmp = fgetc(fd_1);if(tmp!=EOF){ fputc(tmp,fd_2);}}fclose(fd_2);fd_2 = NULL;}fclose(fd_1);fd_1 = NULL;}}return 0;}转载于:https://blog.51cto.com/2668980/2156526