c语言的文件操作

文件的四个核心操作:
1、打开文件 fopen
2、读文件 fread
3、写文件 fwrite
4、关闭文件 fclose

打开文件:fopen()

//打开文件
	//以下的FILE是一个C标准库已经定义好的结构体,返回结果为“文件指针”(即:句柄)
	//如果文件打开失败,返回NULL
	FILE* f = fopen("D:/test.txt", "w");//第二个参数为'r',针对文本文件
	if (f == NULL) {
		perror("文件打开失败");
		//等价代码:printf("文件打开失败! errno=%d,%s\n",errno,strerror(errno));
		system("pause");
		return 1;
	}
	printf("文件打开成功\n");

在这里插入图片描述

读文件:fread()

//fread:把磁盘上的数据读取到内存中
	char buf1[1024] = {0};
	//fread中第二个参数:一个元素占多少个字节,第二个参数:想要读多少个元素,二者相乘为想读的整体字节数
	//返回值为:实际读取到的元素个数
	int n1 = fread(buf1, 1, 1024, f);
	printf("%s\n", buf1);

写文件:fwrite()

//fwrite:把内存中的数据写到磁盘上
	//如果写入成功:返回实际写入磁盘中的元素个数
	//如果写入失败,返回一个<0的结果
	char buf2[] = "bitbit";
	int n2 = fwrite(buf2, 1, strlen(buf2), f);
	//如果实际写入元素个数小于数组长度,写入失败,输出错误原因
	if (n2< strlen(buf2) ){
		//perror():用来将上一个函数发生错误的原因输出到标准设备(stderr)
	perror("fwrite");
	}

在这里插入图片描述

注意:
在这里插入图片描述

在进行fwrite操作时,此处的fopen函数的第二个参数必须为**“w”**,否则会出现以下问题:
在这里插入图片描述

其中:file descriptor:是文件描述符

关闭文件:fclose()

//关闭文件
	fclose(f);

sprintf:字符串格式化命令

//sprintf():把整数转成字符串
	int num = 10;
	char buf3[1024] = { 0 };
	//将int数据放入到char buf3[]这个数组中
	sprintf(buf3, "%d", num);//该操作不是输出	
    printf("%c\n", buf3[0]);
    printf("%c\n", buf3[1]);
	//此处会有一个'\0'输出
	printf("%c\n", buf3[2]);
	printf("%s\n", buf3);

在这里插入图片描述

sscanf:读取格式化的字符串中的数据

//sscanf():从一个字符串中读出与指定格式相符的数据
	char buf4[100];
	sscanf("bitbit", "%3s",buf4 );
	printf("%s\n", buf4);

在这里插入图片描述

整体代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
	//打开文件
	//以下的FILE是一个C标准库已经定义好的结构体,返回结果为“文件指针”(即:句柄)
	//如果文件打开失败,返回NULL
	FILE* f = fopen("D:/test.txt", "w");//第二个参数为'r',针对文本文件
	if (f == NULL) {
		perror("文件打开失败");
		//等价代码:printf("文件打开失败! errno=%d,%s\n",errno,strerror(errno));
		system("pause");
		return 1;
	}
	printf("文件打开成功\n");

	//fread:把磁盘上的数据读取到内存中
	char buf1[1024] = {0};
	//fread中第二个参数:一个元素占多少个字节,第二个参数:想要读多少个元素,二者相乘为想读的整体字节数
	//返回值为:实际读取到的元素个数
	int n1 = fread(buf1, 1, 1024, f);
	printf("%s\n", buf1);

	//fwrite:把内存中的数据写到磁盘上
	//如果写入成功:返回实际写入磁盘中的元素个数
	//如果写入失败,返回一个<0的结果
	char buf2[] = "bitbit";
	int n2 = fwrite(buf2, 1, strlen(buf2), f);
	//如果实际写入元素个数小于数组长度,写入失败,输出错误原因
	if (n2< strlen(buf2) ){
		//perror():用来将上一个函数发生错误的原因输出到标准设备(stderr)
	perror("fwrite");
	}

	//sprintf():把整数转成字符串
	int num = 10;
	char buf3[1024] = { 0 };
	//将int数据放入到char buf3[]这个数组中
	sprintf(buf3, "%d", num);//该操作不是输出	
    printf("%c\n", buf3[0]);
    printf("%c\n", buf3[1]);
	//此处会有一个'\0'输出
	printf("%c\n", buf3[2]);
	printf("%s\n", buf3);


	//sscanf():从一个字符串中读出与指定格式相符的数据
	char buf4[100];
	sscanf("bitbit", "%3s",buf4 );
	printf("%s\n", buf4);

	//关闭文件
	fclose(f);
	system("pause");
	return 0;
}

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值