持续学习&持续更新中…
学习态度:守破离
打开文件
FILE * fopen(char * file_name, char * mode); // 失败返回NULL
注意:如果读写的是二进制文件,则还要在后面加上“b”,比如“rb”、“r+b”等。
注意:打开文件后需要手动关闭文件。
int fclose(FILE * fp); // 失败返回EOF(-1)
fgetc、fputc读写文本文件
API:
int fgetc(FILE * fsrc); // 结束返回EOF
int fputc(int ch, FILE * fdest);
实例:
#include <stdio.h>
void copyWithChar(char * src, char * dest) {
FILE * reader = fopen(src, "r");
FILE * writer = fopen(dest, "w");
char ch;
if(reader == NULL || writer == NULL) {
printf("打开文件异常!\n");
return;
}
while((ch = fgetc(reader)) != EOF) {
fputc(ch, writer);
}
fclose(reader);
fclose(writer);
}
int main() {
copyWithChar("./resources/reader.txt", "./resources/XSSS.txt");
return 0;
}
fgets、fputs读写文本文件
API:
int fgets(char * buff, int buff_length, FILE * fsrc); // 结束返回NULL
int fputs(char * str, FILE * fdest);
实例:
#include <stdio.h>
#define BUFF_SIZE 1024
void copyWithStr(char * src, char * dest) {
FILE * reader = fopen(src, "r");
FILE * writer = fopen(dest, "w");
char buf [BUFF_SIZE] = {0};
if(reader == NULL || writer == NULL) {
printf("打开文件异常!\n");
return;
}
while(NULL != fgets(buf, BUFF_SIZE, reader)) {
fputs(buf, writer);
}
fclose(reader);
fclose(writer);
}
int main() {
copyWithStr("./resources/reader.txt", "./resources/XSSS22.txt");
return 0;
}
二进制(fread、fwrite)读写文件
API:
int fread(void* buf, int type_size, int max_count, FILE * fsrc); // 结束返回0
int fwrite(void* buf, int type_size, int readed_count, FILE * fdest);
实例:
#include <stdio.h>
#define BUFF_SIZE 1024
int copyWithBinary(char * src, char * dest) {
FILE * in = fopen(src, "rb");
FILE * out = fopen(dest, "wb");
char buf [BUFF_SIZE] = {0};
int count = 0;
if(in == NULL || out == NULL) {
printf("打开文件异常!\n");
return -1;
}
while((count = fread(buf, 1, BUFF_SIZE, in)) > 0) {
fwrite(buf, 1, count, out);
}
fclose(in);
fclose(out);
return 0;
}
int main() {
copyWithBinary("./resources/dt.jpg", "./resources/XSSS.jpg");
return 0;
}
参考
王桂林: 零基础入门C语言.
王桂林: C语言,从放弃到入门.
本文完,感谢您的关注支持!