C语言对文件的操作(完整版)

本文详细介绍了C语言中文件操作的相关知识,包括文件的概述、文件类型指针、文件的打开与关闭、文件的读写、输入输出流的选择、文件定位操作以及出错检测。内容涵盖fopen、fclose、fgetc、fputc、fgets、fputs、fscanf、fprintf、fread、fwrite、fseek、ftell、rewind、ferror和clearerr等函数的使用,强调了ASCII文件和二进制文件的区别,并给出了各种操作的总结和建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文对C语言操作文件部分充分演示了(具体看文章目录),基本的函数操作都用最简单的方式去展示,先看代码再看总结。
看懂文章要求懂结构体

以下内容如果读者不喜欢,您也可以按照这个目录去学习(是完整目录了),下面是学习C语言操作文件章节需要掌握的内容

一、文件的概述

操作系统以文件为单位对数据进行管理,输入输出是数据传送的过程,数据如流水一般,从某个位置流到另外一个位置,又从另外一个位置流过来,所以把输入和输出称为一种流,输入输出流
数据文件分为二进制文件和ASCII文件,ASCII文件是一种文本文件
下面是形象的比喻
在这里插入图片描述

ASCII文件可以用文本软件来读取,但是二进制文件一般不可以正常打开,要专用一定的软件或插件转化为显示010101数字的文本可以使其看到010101或者转为汇编语言等(.bin后缀的或者我们常看到的.jpg .doc .mp3等)

二、文件的类型指针

文件类型指针,其实是指向一个结构体的指针,这个结构体是FILE结构体,熟悉结构体就会很容易看懂

struct _iobuf {
   
    char *_ptr; //文件输入的下一个位置
    int _cnt; //当前缓冲区的相对位置
    char *_base; //指基础位置(应该是文件的其始位置)
    int _flag; //文件标志
    int _file; //文件的有效性验证
    int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取
    int _bufsiz; //文件的大小
    char *_tmpfname; //临时文件名
};
typedef struct _iobuf FILE;
FILE *fp;//这是定义了一个结构体指针变量,指向了某一个文件结构体变量
//从而通过该结构体变量中的文件信息能够访问该文件

三、文件的打开与关闭(fopen 和 fclose)

1.文件的使用方式

在这里插入图片描述

操作文件时,这个fopen和fclose是必须的使用的,下面介绍到的操作都基于您已经fopen流和文件建立关联才可以

int main(){
   
	fopen函数('这个是文件地址','这是文件使用方式(上图)');
	FILE *fp = fopen("demo.txt","r");
	fclose(fp);
}

在文件打开文件后,文件默认最后一个是“EOF”为结束符(end of file)
关闭函数fclose成功返回0,否则返回EOF(-1)

四、文件的读写

1.字符读写(fgetc 和 fputc)–ASCII类型读写

字符读写大白话就是一个字符一个字符的读,和一个字符一个字符的写

#include <stdio.h>
#include <stdlib.h>


int main(){
   
	//fputc函数完成了后指针就会自动移到下一个位置让下面的程序继续执行
	FILE *fp = fopen("demo.txt","r+");
	fputc('a',fp);//完成后指针默认移到下一个位置
	printf("%X\n",fp->_ptr);//1969F1 代表现在在1969F0   结构体提供的查询下一个位置的变量  
	fputc('b',fp);// +1
	printf("%X\n",fp->_ptr);//1969F2 代表现在在1969F1这个位置 
	fputc('c',fp);// +1 现在在1969F2的位置
	
	rewind(fp); //这个函数用于复位,把指针位置重置到文件开头,这个函数没有返回值(六、本文文件定位与操作中讲到) 
	printf("%X\n",fp
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值