首页 > 其他分享 >标准IO

标准IO

时间:2025-01-08 21:28:37浏览次数:3  
标签:node fp return int 标准 nodeptr IO printf

1.思维导图

2.使用 fread 和 fwrite 函数,重写昨天的第2个作业

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student
{
	char name[10];
	int chinese;
	int math;
	int English;
	int physics;
	int chemistry;
	int biology;
}stu,*stuptr;
typedef struct node
{
	union
	{
		stu data;
		int len;
	};
	struct node* next;
}node,*nodeptr;
nodeptr creat_head()
{
	nodeptr h = (nodeptr)malloc(sizeof(node));
	if(NULL == h)
	{
		printf("创建失败\n");
		return NULL;
	}
	h->len = 0;
	h->next = NULL;
	return h;
}
nodeptr node_creat(stu arr)
{
	nodeptr p = (nodeptr)malloc(sizeof(node));
	if(NULL==p)
	{
		printf("创建失败\n");
		return NULL;
	}
	p->data=arr;
	p->next=NULL;
	return p;
}
int node_add(stu arr,nodeptr h)
{
	if(NULL==h)
	{
		printf("插入失败\n");
		return 0;
	}
	nodeptr p=node_creat(arr);
	p->next=h->next;
	h->next=p;
	h->len++;
	return 1;
}
int show(nodeptr h)
{
	if(NULL==h)
	{
		printf("遍历失败\n");
		return 0;
	}
	nodeptr p=h;
	while(p->next!=NULL)
	{
		p=p->next;
		printf("姓名:%s\n",p->data.name);
		printf("语文:%d\n",p->data.chinese);
		printf("数学:%d\n",p->data.math);
		printf("英语:%d\n",p->data.English);
		printf("物理:%d\n",p->data.physics);
		printf("化学:%d\n",p->data.chemistry);
		printf("生物:%d\n",p->data.biology);
		printf("------------------------\n");
	}
}
int save(nodeptr h)
{
	if(NULL==h)
	{
		printf("失败\n");
		return 0;
	}
	FILE* fp = fopen("student.text","w");
	nodeptr p=h;
	for(int i=0;i<3;i++)
	{
		p=p->next;
		fwrite(&p->data,sizeof(stu),1,fp);
	}
	fclose(fp);
	return 1;
}
int load(nodeptr p)
{
	FILE* fp = fopen("student.text","r");
	while(1)
	{
		stu brr={0};
		int res=fread(&brr,sizeof(stu),1,fp);
		if(res==0){break;}
		node_add(brr,p);
	}
	fclose(fp);
	return 1;
}

int main(int argc, const char *argv[])
{
	nodeptr h=creat_head();
	stu arr1={"chen",99,88,99,88,98,88};
	stu arr2={"yu",99,98,99,78,98,88};
	stu arr3={"lin",99,88,99,98,98,98};
	node_add(arr1,h);
	node_add(arr2,h);
	node_add(arr3,h);
	save(h);
	

	nodeptr b=creat_head();
	load(b);
	show(b);
	show(h);
	return 0;
}

结果

 

3.使用 fread 和 fwrite 将一张任意bmp图片改成德国国旗

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	FILE* fp = fopen("gaoda.bmp","r+");
	if(NULL==fp)
	{
		perror("fopen");
		return 0;
	}
	int bmp_size=0,bmp_width=0,bmp_height=0;
	fseek(fp,18,SEEK_SET);
	fread(&bmp_width,4,1,fp);
	fread(&bmp_height,4,1,fp);
	

    int size=bmp_height*bmp_width;
	fseek(fp,54,SEEK_SET);
	unsigned char yellow[3] ={0,255,255};
	unsigned char red[3]={0,0,255};
	unsigned char black[3]={0,0,0};
	for(int i=0;i<size;i++)
	{
		if(i>=0&&i<size/3)
		{
			fwrite(yellow,3,1,fp);
		}

		else if(i>=size/3&&i<2*size/3)
		{
			fwrite(red,3,1,fp);
		}
		 else if(i>=2*size/3&&i<size)
		{
			fwrite(black,3,1,fp);
		}
	}
	fclose(fp);
	return 0;
}

标签:node,fp,return,int,标准,nodeptr,IO,printf
From: https://blog.csdn.net/Ma_Lin_/article/details/145016519

相关文章

  • day31,文件io,目录io
    文件io标准io与文件io文件打开权限对照目录iod_type(文件类型)......
  • Recursive Decomposition of Logical Thoughts: Framework for Superior Reasoning an
    题目逻辑思维的递归分解:大型语言模型中高级推理和知识传播的框架论文地址:https://arxiv.org/abs/2501.02026摘要    增强大型语言模型的推理能力仍然是人工智能领域的一大挑战。我们引入了RDoLT(逻辑思维递归分解)提示,这是一个显著提高LLM推理性能的新颖框架。RD......
  • Confidence v.s. Critique: A Decomposition of Self-Correction Capability for LLMs
    题目信心v.s.批判:LLM自我修正能力的分解论文地址:https://arxiv.org/abs/2412.19513项目地址:https://github.com/Zhe-Young/SelfCorrectDecompose摘要    大型语言模型(LLM)可以纠正其自生成的响应,但自纠正后的准确性也有所下降。为了对自我纠错有更深入的理解......
  • 【Azure Function】部署Java Function失败:报错deploy [ERROR] Status code 401和警告
    问题描述部署JavaFunctionApp到中国区Azure上时,遇见了错误信息:错误信息:deploy[ERROR]Statuscode401,(emptybody)警告信息:ChinaNorth3maynotbeavalidregion,pleaserefertohttps://aka.ms/maven_function_configuration#supported-regionsforvalues. ......
  • Stable Diffusion完整入门指南,保姆级教程!干货满满
    前言AI绘画真的火了!最近观察员打开各大平台刷到的基本上都是用AI生成的画像、插画,甚至建筑设计这份完整版的AI绘画全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】区别于早几年的人工智能如今的AI只需要给它一......
  • sqlalchemy.exc.OperationalError
    最后发现是密码中含特殊字符@导致的连接报错  其他参考:sqlalchemy.exc.OperationalError通常指示Python应用程序与数据库之间的连接出现问题。这里有一些可能的原因和解决方案:数据库连接参数错误:检查你的数据库连接字符串(DSN)。确保主机名、端口、数据库名称、用户名......
  • 【Unity 武术战斗动画资源插件】Combat Animations - Kung Fu V1 完整的武术战斗动画
    CombatAnimations-KungFuV1是一款专为Unity开发者设计的插件,提供了一套完整的武术战斗动画资源。该插件以中国功夫为主题,动作风格细腻、充满力量感,适合用于格斗类、动作冒险类或RPG游戏,为游戏中的角色赋予流畅、真实的武术战斗表现。主要特点丰富的功夫动画动作插件......
  • 安卓编译报错Execution failed for task ‘:expo-modules-core:prepareBoost‘. Not i
    作者:Kovli重要通知:红宝书第5版2024年12月1日出炉了,感兴趣的可以去看看,https://u.jd.com/saQw1vP红宝书第五版中文版红宝书第五版英文原版pdf下载(访问密码:9696)报错如下[RUN_GRADLEW]Executionfailedfortask':expo-modules-core:prepareBoost'.[RUN_GRADLEW]>Cou......
  • sys.dm_exec_connections:查询与 SQL Server 实例建立的连接有关的信息以及每个连接的
    文章目录引言I基于dm_exec_connections查询客户端ip权限物理联接时间范围dm_exec_connections表seealso:监视SQLServer内存使用量资源信号灯DMVsys.dm_exec_query_resource_semaphores(确定查询执行内存的等待)引言查询历史数据库客户端ip应......
  • Veeam Backup & Replication 11备份windows服务器,物理机迁移
    原文转自VeeamBackup&Replication11备份windows服务器,物理机迁移VeeamBackup&Replication11备份windows服务器今天用Veeam给windows服务器做备份。如果是物理机迁移至虚拟机,也可以先备份,再恢复到指导位置。 安装veeambackup&replicationconsole先在server......