1. 程式人生 > >c 文件操作

c 文件操作

str std putc 指針 a+b 追加 utc 源文件 else if

每一個打開的文件在內存裏面都有個結構體來保存文件的信息:大小,位置,修改時間,權限等等。這個結構體是系統定義: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;
}

c 文件操作