一篇文章搞定c语言文件操作(windows10)

一,打开和关闭文件

打开和关闭文件涉及的知识点包括:文件结构指针FILE,文件操作模式、以及库函数fopen()、fclose()。
1,文件结构指针
每个被从磁盘读入内存的文件都会在内存中占据一块临时缓冲区,文件结构指针的作用就是指向该缓冲区,方便对缓冲区数据进行操作。
在这里插入图片描述
在对文件进行操作时,需要定义一个指向该文件缓冲区的指针:

FILE *fp;

2、文件操作模式
在打开一个文件时,需要指定打开的模式,打开的模式不同,对文件操作的过程和结果也不同。在这里插入图片描述 3.、fopen ()和fclose()
fopen()和fclose()必须一起使用,fopen()用于打开文件,对文件进行操作之后,又必须使用fclose()关闭文件,否则缓冲区的数据会有被误用的风险。

#include <stdio.h>
#include <stdlib.h>
int all;

int main() {

	printf("file write and read\n");
	FILE* fp;//文件结构指针,指向内存中打开的临时缓冲区
	char ch;
	if ((fp = fopen("D:\\安装包\\test.txt", "w")) == NULL) {//绝对路径需要在文件夹分隔符——反斜杠之前加放斜杠作为转义符,否则会报错。
		printf("file not exist\n");
		return 0;
	}
	ch = getchar();
	putchar(ch);
	while (ch != '#') {
		fputc(ch, fp);
		ch = getchar();
		putchar(ch);
	}
	fclose(fp);
	putchar(10);
	return 0;
}

二、文件操作

对文件进行操作的库函数有如下几种:
在这里插入图片描述
1、fgetc()和fput()用于顺序读写文件,其顺序和物理阅读的顺序一样,fget()从文件开头向结尾逐字符读取,fput()则从fp指向的位置逐字符向后写入。
2.fgets和fputs用于读取字符串,
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int all;

int main() {

	printf("file write and read\n");
	FILE* fp1,*fp2;
	char ch[100];
	if ((fp1 = fopen("E:\\c\\一朝忽觉京梦醒,半世浮沉雨打萍.txt", "r")) == NULL) {
		printf("file not exist\n");
		return 0;
	}
	if ((fp2 = fopen("E:\\c\\一朝忽觉京梦醒,半世浮沉雨打萍(副本).txt", "w")) == NULL) {
		printf("file not exist\n");
		return 0;
	}
	while (!feof(fp1)) {
		fgets(ch, 10, fp1);
		fputs(ch, fp2);

	}
	fclose(fp2);
	fclose(fp1);
	putchar(10);
	return 0;

3、fprint和fscanf用于格式化输入输出文件
在这里插入图片描述

void move(char one, char two)
{
	FILE* fp1;
	if ((fp1 = fopen("E:\\c\\hannoi.txt", "a")) == NULL) {
		printf("file not exist\n");
		exit(0);
	}
	fprintf(fp1, "%d:%c->%c\n",all, one, two);
	fclose(fp1);
	all++;
}

4、fread和fwrite用于读写二进制文件。
在这里插入图片描述

buffer:是一个地址,对fread来说,它是用来存放从文件读入的数据的存储区的地址,对fwrite来说,它是指把从该地址开始的存储区的数据向文件写出。
size:要读多少字节的数据
count:要读多少个大小为size的数据
fp:文件指针。

三、随机读写文件

包括几个函数:
1、rewind

rewind(fp);//回到fp所指文件的开头

2、fseek改变文件的标记位置
在这里插入图片描述
位移量表示为字节
起始点的含义如下:
在这里插入图片描述

在这里插入图片描述
3、ftell函数测定文件指针的当前位置
在这里插入图片描述

四、文件的读写出错检测

1、ferror
在调用前面介绍的各种输入输出函数(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf)时,除了函数返回值可以检错之外,还可以用ferror函数进行检测。

ferror(fp);//返回值为0表示未出错,非0则表示出错,

2、clearerr
clear函数的作用是使文件结束或者文件出错标志重置为0,比如在调用调用一个输入输出函数时出错,ferror的值变为了非0,应该立即调用clearerr函数将其置为0.

clearerr(fp);
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值