【C语言】文件操作


持续学习&持续更新中…

学习态度:守破离


打开文件

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语言,从放弃到入门.


本文完,感谢您的关注支持!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值