前言:
fopen(A,B) 参数A,B均是字符串;A表示待打开文件的名字,B表示打开方式
fclose(FILE* F) 关闭文件F
常见打开方式:
"w" 写入操作 "r" 读取操作 "a"追加数据
"rb" 二进制读取操作 "wb" 二进制写入操作
"r+":可读可写,原文件必须存在 "w+":创建一个可读可写的新文件
"a+":可读可追加
常用函数:
fgetc(FILE* F) 从F指向的文件中读取一个字符
fputc( int C , FILE * F ) 将C写入F所指向的文件当中
fgets( char * S , int n , FILE * F ) 从F所指向的文件中读取n个字符到S
fputs( char * S , FILE * F ) 向F所指向的文件中写入字符串S
fread和fwrite函数用于二进制的读写
fread( buf , size , num , fp ) //参数num表示读取次数
fwrite( buf , size , num , fp ) 功能相反,其余同上
freopen( const char * A , const char * B , FILE * F ) //文件流重定向
A:文件名称 B:打开方式 F:文件流
rewind(FILE* F) 使文件的读取位置指针重新指向文件的开头
样例代码:
//Codes1 #include <stdio.h> int main(int argc, char** argv) { FILE* fp = fopen("E:\\桌面材料\\新建文件夹\\新建 文本文档.txt", "a"); char* s = "Hello World!"; fputs(s, fp); fclose(fp); return 0; }
//Codes2 #include <stdio.h> int main(int argc, char** argv) { FILE* fp = fopen("E:\\桌面材料\\新建文件夹\\新建 文本文档.txt", "r"); char c; while((c = fgetc(fp)) != -1) { //当读到文件末尾时,返回值为-1 printf("%c", c); } fclose(fp); return 0; }
//Codes3 #include <stdio.h> int main(int argc, char** argv) { FILE* fp = fopen("E:\\桌面材料\\新建文件夹\\新建 文本文档.txt", "r"); char buf[1024]; while(fgets(buf, sizeof(buf), fp) != NULL) { printf("%s", buf); } fclose(fp); return 0; }
//Codes4 文件拷贝 #include <stdio.h> int main(int argc, char** argv) { FILE* fp1 = fopen("E:\\桌面材料\\新建文件夹\\sana.jpg", "rb"); FILE* fp2 = fopen("E:\\桌面材料\\新建文件夹\\sana_copy.jpg", "wb"); int n; char buf[1024]; //每次从源文件中读取一个字节,重复sizeof(buf)次,最终将读取到的元素个数返回给变量n while(n = fread(buf, 1, sizeof(buf), fp1)) { //从buf中每次写入一个字节,重复n次 fwrite(buf, 1, n, fp2); } fclose(fp1); fclose(fp2); return 0; }