C语言---文件操作

news/2024/9/22 4:16:57

【C语言详解】——文件操作(建议收藏)_c语言 写文件原理-CSDN博客

一、文件的读取

# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>


int main()
{

	FILE * pf=fopen("C:\\Users\\zhw\\Desktop\\test.txt", "r");
	if (pf == NULL)      //如果打开文件失败
	{
		printf("%s\n", strerror(errno));  //打印错误日志
		return 1;
	}
	//读文件
	int ch = 0;
	while ((ch = fgetc(pf)) != EOF)
	{
		printf("%c ", ch);
	}


	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

搞懂C语言中的EOF是什么_eof ==在c语言中表示什么-CSDN博客

二 文件的写入

# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>


int main()
{

	FILE * pf=fopen("C:\\Users\\zhw\\Desktop\\test.txt", "w");
	if (pf == NULL)      //如果打开文件失败
	{
		printf("%s\n", strerror(errno));  //打印错误日志
		return 1;
	}
	//写文件
	char i = 0;
	for (i = 'a'; i <= 'z'; i++)
	{
		fputc(i, pf);
	}



	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

三 读取一行数据

# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>


int main()
{

	FILE * pf=fopen("C:\\Users\\zhw\\Desktop\\test.txt", "r");
	if (pf == NULL)      //如果打开文件失败
	{
		printf("%s\n", strerror(errno));  //打印错误日志
		return 1;
	}
	//写一行数据
	/*fputs("hellowold\n", pf);
	fputs("hellowold\n", pf);*/
   


	//读一行数据
	char arr[20];
	fgets(arr, 20, pf);
	printf("%s\n", arr);

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

四 fprintf()函数的用法

# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>

struct S
{
	char arr[10];
	int age;
	float score;

};



int main()
{
	struct S s = { "zhangsan",25,50.5f };
	FILE* pf = fopen("C:\\Users\\zhw\\Desktop\\test.txt", "w");
	if (pf == NULL)      //如果打开文件失败
	{
		perror("fopen");  //打印错误日志
		return 1;
	}

	fprintf(pf, " %s %d %f", s.arr, s.age, s.score);

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}
# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>

struct S
{
	char arr[10];
	int age;
	float score;

};



int main()
{
	struct S s = { "zhangsan",25,50.5f };
	FILE* pf = fopen("C:\\Users\\zhw\\Desktop\\test.txt", "r");
	if (pf == NULL)      //如果打开文件失败
	{
		perror("fopen");  //打印错误日志
		return 1;
	}

	//fprintf(pf, " %s %d %f", s.arr, s.age, s.score);

	//读取文件
	fscanf(pf, "%s %d %f", s.arr, &(s.age), &(s.score));
	//printf("%s %d %f\n", s.arr, s.age, s.score);
    fprintf(stdout,"%s %d %f\n", s.arr, s.age, s.score);



	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

任何 一个C语言程序,只要运行起来就会默认打开3个流:

FILE * stdin        -标准输入流(键盘)

FILE * stdout     -标准输出流(屏幕)

FILE * stderr     -标准错误流(屏幕)

五  fwrite 和fread

# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>

struct S
{
	char arr[10];
	int age;
	float score;

};



int main()
{
	struct S s = { "zhangsan",25,50.5f };
	FILE* pf = fopen("C:\\Users\\zhw\\Desktop\\test.txt", "wb");
	if (pf == NULL)      //如果打开文件失败
	{
		perror("fopen");  //打印错误日志
		return 1;
	}

	//以二进制的形式写到文件中
	fwrite(&s, sizeof(struct S), 1, pf);


	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}
# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<errno.h>
#include<string.h>

struct S
{
	char arr[10];
	int age;
	float score;

};



int main()
{
	struct S s = { 0 };
	FILE* pf = fopen("C:\\Users\\zhw\\Desktop\\test.txt", "rb");
	if (pf == NULL)      //如果打开文件失败
	{
		perror("fopen");  //打印错误日志
		return 1;
	}
	//以二进制的形式写到文件中
	//fwrite(&s, sizeof(struct S), 1, pf);



	//以二进制的方式读
	fread(&s, sizeof(struct S), 1, pf);
	printf("%s %d %f\n", s.arr, s.age, s.score);


	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}


http://lihuaxi.xjx100.cn/news/2178200.html

相关文章

LFCDR:Latent mutual feature extraction for cross-domain recommendation

Latent mutual feature extraction for cross-domain recommendation Knowledge and Information Systems-Hoon Park , Jason J. Jung-2024 思路 大部分研究都是主要集中在同构域,所以在没有共同用户的情况下,项目和元数据的异构对推荐任务造成了限制。 于是提出一个异构的…

C语言从头学13——流程控制(二)

接着学习流程控制&#xff0c;并继续上一篇的编号。 4、while 语句 while语句用于循环结构&#xff0c;满足条件时&#xff0c;不断执行循环体&#xff0c;直到条件不满足时退出。如果 一直满足循环条件无法结束循环&#xff0c;会陷入死循环&#xff0c;这是应当避免的…

【FISCO BCOS 3.0】一、新版本搭链介绍

目录 一、区块链种类的变化 二、搭链演示 1.单群组区块链&#xff08;Air版本&#xff09; 2.多群组区块链&#xff08;Pro版本&#xff09; 3.可扩展区块链&#xff08;Max版本&#xff09; FISCO BCOS的发展速度如日中天&#xff0c;对于稳定的2.0版本而言&#xff0c;偶…

mac安装的VMware虚拟机进行桥接模式配置

1、先进行网络适配器选择&#xff0c;选择桥接模式 2、点击网络适配器 设置... 3、选择WiFi&#xff08;我使用的是WiFi&#xff0c;所以选择这个&#xff09;&#xff0c;注意看右边的信息&#xff1a;IP和子网掩码&#xff0c;后续配置虚拟机的ifcfg-ens文件会用到 4、编辑if…

JAVA自制小游戏之推箱子

给家里孩子实现益智游戏开发,教会他怎么使用编程。以下是一个简单的推箱子游戏的Java实现,包含两个关卡: 这个程序包含两个关卡,每个关卡都是一个字符串表示的地图。游戏会提示玩家输入移动方向(WASD),然后根据输入的方向移动玩家。如果玩家成功将所有的箱子推到目标位…

【深度好文】AI企业融合联盟营销,做的好就是最大赢家!

AI工具市场正在迅速发展&#xff0c;现仍有不少企业陆续涌出&#xff0c;那么如何让你的工具受到目标群体的关注呢&#xff1f;这相比是AI工具营销人员一直在思考的问题。 即使这个市场正蓬勃发展&#xff0c;也无法保证营销就能轻易成功。AI工具虽然被越来越多人认可和接受&a…

【LLM多模态】多模态LLM在图表处理的应用

note 在真实场景下&#xff0c;我们进行测试&#xff0c;多模态大模型在处理显著文本时表现尚可&#xff0c;但在处理细粒度文本时往往效果并不太好&#xff0c;why? ​具体原因如下&#xff1a; 首先&#xff0c;视觉编码器的分辨率对于多模态大模型的性能影响较大&#x…

【小技巧】Keil C51 报错“*** ERROR L107: ADDRESS SPACE OVERFLOW****

软件&#xff1a;Keil C51 C51V961版本 电脑&#xff1a;Win10 报错提示&#xff1a; compiling System.c... linking... *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?LCD LENGTH: 0034H Program Size: data174.0 xdata17 code1205 Target not create…