c 文件操作

每一个打开的文件在内存里面都有个结构体来保存文件的信息:大小,位置,修改时间,权限等等。这个结构体是系统定义: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;
}

猜你喜欢

转载自blog.51cto.com/2668980/2156526