c语言的文件操作

什么是文件

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件

文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀
例如: c:\code\test.txt
为了方便起见,文件标识常被称为文件名。

文件的核心操作

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

在读写文件之前必须先打开
文件是在磁盘上,程序直接操作磁盘不太方便,打开文件就是创建一个遥控器,这个遥控器是内存中的一个变量,借助这个内存中的变量就可以更方便的来操作磁盘
这样的遥控器称为“句柄”

		FILE* fp = fopen("d:/test.txtaaaa", "r");//结构体变量fp就是提到的遥控器,文件指针,句柄
	if (fp == NULL){
		//使用错误码获取失败的原因
		printf("打开文件失败!%d\n", errno);
		printf("打开文件失败!%s\n",strerror(errno));
		return 0;
	}

在这里插入图片描述

perror("打开文件失败!");//更常见的写法

读写文件操作

	FILE* fp = fopen("d:/test.txt", "r");//结构体变量fp就是提到的遥控器,文件指针,句柄
	if (fp == NULL){
		//使用错误码获取失败的原因
		perror("打开文件失败!");
		system("pause");
		return 0;
	}
	char buf[1024] = { 0 };
	//把磁盘的数据读到内存之中
	size_t n=fread(buf, 1, sizeof(buf)-1, fp);
	printf("%d\n", n);
	printf("%s\n", buf);
	
	system("pause");
	return 0;

在这里插入图片描述
在这里插入图片描述
确实将文本的内容读出来

	FILE* fp = fopen("d:/test.txt", "w");//结构体变量fp就是提到的遥控器,文件指针,句柄
	if (fp == NULL){
		//使用错误码获取失败的原因
		perror("打开文件失败!");
		system("pause");
		return 0;
	}

	char buf[1024] = "呵呵呵呵呵呵";
	fwrite(buf, 1, strlen(buf), fp);
		//将内存的数据写到磁盘里

在这里插入图片描述
文件的内容得到了修改

那么最多可以打开多少个文件,我们开下面这个代码

	int count=0;
	while (1)
	{
		FILE* fp = fopen("d:/test.txt", "w");//结构体变量fp就是提到的遥控器,文件指针,句柄
		if (fp == NULL){
			//使用错误码获取失败的原因
			perror("打开文件失败!");
			printf("%d\n", count);
			system("pause");
			return 0;
		}
		++count;
	}

在这里插入图片描述
一个程序能打开的文件是有上限,我的电脑,512是上限
509是代码自己打开的文件
还有三个文件是程序运行过程中,操作系统自动打开的文件

  1. stdin:标准输入 =>键盘
  2. stdout:标准输出 =>显示器
  3. stderr:标准错误 =>显示器
  4. 这都是一个文件,一个特殊的文件,对应的不是磁盘,而是键盘显示器,为了管理方便,操作显示器读写文件,操作键盘读写文件
//以stdiou为例子
	FILE* fp = fopen("d:/test.txt", "w");
	if (fp == NULL){
		perror("打开文件失败\n");
		return 0;
	}
	char buf[1024] = "hehe";
	fwrite(buf, 1, strlen(buf), stdout);

在这里插入图片描述
文件是空

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值