【C语言】文件操作(基础篇)


思维导图

在这里插入图片描述

文件概念

什么是文件

文件:是指由创建者所定义的一组相关信息的集合。



文件的分类

从编码上来说

  • 文本文件

文本文件:一般指只有字符原生编码构成的二进制计算机文件。

  • 二进制文件

二进制文件:一般指包含ASCII及扩展ASCII字符中编写的数据或程序指令的文件。

  • 广义:在外部存储方式是二进制。
  • 狭义:指除文本文件以外的文件。



一个简单的文件读写

基本步骤

粗略的步骤

  1. 打开文件
  2. 读/写文件
  3. 关闭文件

细化的步骤

  1. 创建FILE文件指针,指向要打开的文件
  2. 调用fopen函数打开文件
  3. 根据需要对文件进行相应的读/写操作
  4. 调用fclose函数关闭文件流


代码演练

实验环境,vs2013

#define _CRT_SECURE_NO_WARNINGS// 强行除去安全检查
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
   
	
	// 创建文件指针
	FILE *fp;
	// 创建临时存储变量
	int ch;

	// 创建文件路径
	const char *path = "D:\\test.txt";

	// 调用fopen函数打开文件
	fp = fopen(path, "r");

	//读取文件中的内容
	while ((ch = getc(fp)) != EOF)
	{
   
		putc(ch, stdout);
	}
	
	printf("\n");

	// 关闭文件
	fclose(fp);

	system("pause");
	return 0;
}

上面的这个程序只能说是一个大概的框架,没有添加安全检查。

更改后

#define _CRT_SECURE_NO_WARNINGS// 强行除去安全检查
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
   
	
	// 创建文件指针
	FILE *fp;
	// 创建临时存储变量
	int ch;

	// 创建文件路径
	const char *path = "D:\\test.txt";

	// 调用fopen函数
	// 判断文件是否正常打开
	if ((fp = fopen(path, "r")))
	{
   
		while ((ch = getc(fp)) != EOF)
		{
   
			putc(ch,stdout);
		}
		printf("\n");
	}
	else
	{
   
		perror(path);
		exit(EXIT_FAILURE);
	}


	// 判断文件是否正常关闭
	if (fclose(fp) == EOF)
	{
   
		perror(path);
		exit(EXIT_FAILURE);
	}


	system("pause");
	return 0;
}

两次成功运行结果:

在这里插入图片描述

假如删除D盘下的test.txt,看下面的运行结果(请将else中,exit(EXIT_FAILURE);注释掉):

在这里插入图片描述

补充

错误报告函数

void perror(char const *message);

终止函数

void exit(int status);




常用函数

单个字符IO流

getc

从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

函数原型

int getc(FILE *stream);

参数

  • FILE *stream:这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。

返回值

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF



putc

把参数 char 指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。

函数原型

int putc(int char,FILE *stream);

参数

  • int char:要被写入的字符。该字符以其对应的 int 值进行传递。
  • FILE *stream:指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。

返回值

该函数以无符号 char 强制转换为 int 的形式返回写入的字符,如果发生错误,则返回 EOF。


实例

#define _CRT_SECURE_NO_WARNINGS// 强行除去安
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值