拷贝文件的一些操作

利用fputc 、fgetc实现文件的拷贝

int main(int argc, const char *argv[])
{FILE* rfp=fopen(argv[1],"r");FILE* wfp=fopen(argv[2],"w");if(rfp==NULL || wfp==NULL){perror("fopen");return 1;}while(1){char res=fgetc(rfp);if(feof(rfp)==1){break;}fputc(res,wfp);}fclose(rfp);fclose(wfp);return 0;
}

 

将链表中数据拷贝到文件中,再将文件内容拷贝入链表

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Data
{char name[32];int age;int score;
}data_t;typedef struct Student
{union studata{struct Student* tail;//在头节点里面,用来存放尾节点指针data_t val;}data;struct Student* next;
}stu_t;// 创建头节点
stu_t* create_head()
{stu_t* head = (stu_t*)malloc(sizeof(stu_t));memset(head,0,sizeof(stu_t));head->data.tail = head;// 只有头节点的时候,尾节点就是头节点本身head->next = NULL;return head;
}// 创建普通节点
stu_t* create_node()
{stu_t* newnode = (stu_t*)malloc(sizeof(stu_t));memset(newnode,0,sizeof(stu_t));return newnode;
}// 向链表中添加一个新的节点
void insert_node(stu_t* head,data_t data)
{stu_t* newnode = create_node();newnode->data.val = data;head->data.tail->next = newnode;head->data.tail = newnode;newnode->next = NULL;
}void show(stu_t* head)
{stu_t* p = head->next;printf("学生信息如下:\n");while(p != NULL){printf("姓名:%s 年龄:%d 成绩:%d\n",p->data.val.name,p->data.val.age,p->data.val.score);p = p->next;}printf("------------------\n");
}void save_stu(stu_t* head)
{FILE* fp = fopen("./1.c","w");if(fp == NULL){return;}stu_t* p = head->next;while(p != NULL){fprintf(fp,"%s %d %d\n",p->data.val.name,p->data.val.age,p->data.val.score);p = p->next;}fclose(fp);
}void load_stu(stu_t* head)
{FILE* fp = fopen("./1.c","r");if(fp == NULL){return ;}while(1){// 准备一个临时的学生数据域,用来保存从文件中读取到的信息data_t data = {0};int res = fscanf(fp,"%s %d %d\n",data.name,&data.age,&data.score);if(feof(fp)==1){break;}insert_node(head,data);}fclose(fp);
}int main(int argc, const char *argv[])
{stu_t* head = create_head();load_stu(head);int num=0;while(1){printf("1:添加学生\n");printf("2:查看学生信息\n");printf("3:保存学生信息\n");printf("请选择:");scanf("%d",&num);printf("------------------\n");getchar();switch(num){case 1:{data_t data;printf("请输入学生姓名、年龄、成绩:");scanf("%s %d %d",data.name,&data.age,&data.score);printf("------------------\n");insert_node(head,data);break;}case 2:show(head);break;case 3:save_stu(head);break;default:break;}}return 0;
}

结果如下: 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PointCloudLib LocalMaximum_DeleteMaxPoint C++版本

测试效果 简介 在点云库&#xff08;Point Cloud Library&#xff0c;PCL&#xff09;中&#xff0c;处理点云数据时&#xff0c;经常需要去除局部最大点&#xff08;Local Maximum&#xff09;&#xff0c;这通常用于去除噪声、提取特定形状的特征或者简化点云数据。局部最大…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-14 SPI MASET发送程序设计

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

数据库管理-第220期 Oracle的高可用-03(20240715)

数据库管理220期 2024-07-15 数据库管理-第220期 Oracle的高可用-03&#xff08;20240715&#xff09;1 AC/TAC2 配置Service3 用户权限4 端口开放总结 数据库管理-第220期 Oracle的高可用-03&#xff08;20240715&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文…

Modbus - 笔记

1 Modbus Poll/Slave 模拟器使用教程 Modbus Poll/Slave 模拟器使用教程_modbus poll 使用教程-CSDN博客 https://item.jd.com/67488830087.html

Node.js 爬虫开发实战:构建一个高效、优雅的网络数据抓取器

在大数据时代&#xff0c;从网页上自动抓取数据的需求日益增长。Node.js&#xff0c;以其异步非阻塞I/O模型&#xff0c;成为了构建高性能网络爬虫的理想选择。本文将引导你如何使用Node.js&#xff0c;结合axios和cheerio两个流行库&#xff0c;创建一个能够从目标网站抓取信息…

51单片机10(蜂鸣器介绍)

一、蜂鸣器介绍&#xff1a; 1、蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电&#xff0c;广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器。 &#xff08;1&#xff09;压电式蜂鸣器&#xff0c;它主要由多谐的一个增胀器…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(八)-通过无人机进行无线接入

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

电脑出现错误——找不到msvcp140.dll无法继续执行代码,有效解决错误dll文件

msvcp140.dll是一个属于 Microsoft Visual C Redistributable for Visual Studio 2015 的 DLL 文件。这个文件是许多Windows应用程序&#xff08;尤其是使用 C 开发的程序&#xff09;所必需的&#xff0c;因为它包含了标准 C 库的函数实现&#xff0c;用于处理数学运算、数据转…

【React Hooks原理 - useRef】

概述 在Function Component项目中当我们需要操作dom的时候&#xff0c;第一时间想到的就是使用useRef这个Hook来绑定dom。但是这个仅仅是使用这个Hook而已&#xff0c;为了更好的学习React Hooks内部实现原理&#xff0c;知其所以然。所以本文根据源码从useRef的基础使用场景一…

使用shell脚本打印99乘法表

一、简介 前一段时间在旧电脑上安装 antiX 23.1 操作系统&#xff0c;遇到一些问题需要使用shell脚本解决问题&#xff0c;所以专门学习了几天&#xff0c;打印99乘法表是其中的一个练习作业。 二、学习Linux可行的几种方式 虚拟机安装Linux进行学习直接双系统安装在实体电脑…

Ubuntu新系统的使用

1.安装显卡驱动 直接到软件与更新里面&#xff0c;就是一个A字图标的那个软件打开&#xff0c;到附加驱动里选择。要选择“server driver”的&#xff0c;选择后确认即可。 然后输入&#xff1a;nvidia-sim查看 别的方法太复杂&#xff0c;这个方法我亲测了两台电脑&#xff…

kubebuilder入门

1. 安装kubebuilder brew install kubebuilder 2. 需求描述 开发一个zk operator。 cr定义为ZooKeeperCluster 3. 开发过程 3.1 创建一个空的文件夹zk-operator mkdir zk-operator 3.2 进入该文件夹 cd zk-operator 3.3 执行初始化 kubebuilder init --domain my.doma…

MWA(Modern Web App)初学那些事-2-Basic HTML CSS

初学MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS 目录 初学MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS前言一、本节学习目标二、HTML基础内容2.1关键元素2.4 Scripts 三、CSS 基础内容3.1 级联样式表-用于设置网页样式和布局3.2 CSS规则语…

springcloud使用微服务的搭建

微服务的搭建 1.配置对应信息 Springboot 、springcloud、springcloud alibaba对应关系 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 2.pom.xml的配置 2.1 总项目pom.xml引入依赖 <parent><groupId>org.sprin…

阿里通义音频生成大模型 FunAudioLLM 开源

简介 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的进步极大地改变了人类与机器的互动方式&#xff0c;特别是在语音处理领域。阿里巴巴通义实验室最近开源了一个名为FunAudioLLM的语音大模型项目&#xff0c;旨在促进人类与大型语言模型&#xff08;LLMs&…

vue3在 setup 中访问路由和当前路由

报错信息&#xff1a; Cannot read properties of undefined (reading $router) 原因&#xff1a; 因为我们在 setup 里面没有访问 this&#xff0c;所以我们不能直接访问 this.$router 或 this.$route。 解决方案&#xff1a; 作为替代&#xff0c;我们使用 useRouter 和…

Oracle字符集修改

提示 Oracle数据库默认的字符集编码为US7ASCII&#xff0c;这个编码是不支持中文的&#xff0c;如果想要在数据库存储中文&#xff0c;就需要修改编码为ZHS16GBK或UTF-8 编码和字符集是一个意思&#xff0c;只是叫法不一样而已 前置条件 修改字符集的前提是知道我们现在用的是什…

跳妹儿学编程之ScratchJr(9):程序控制积木篇—短跑比赛

跳妹儿学编程之ScratchJr(7)&#xff1a;动作积木篇—爸爸去散步 跳妹儿学编程之ScratchJr(8)&#xff1a;外观积木篇—捉迷藏 跳妹儿学编程之ScratchJr(9)&#xff1a;程序控制积木篇—短跑比赛 引言 在之前的一篇文章中&#xff0c;我们了解了ScratchJr的动作积木和外观积…

std::getline

std::getline 是 C 标准库中的一个函数&#xff0c;用于从输入流中读取一行数据并存储到字符串中。它通常用于读取用户输入或从文件中读取文本数据。以下是 std::getline 的一般用法和说明&#xff1a; #include <iostream> #include <string>int main() {std::st…

skywalking 请求链路采样设置和原理

目标 skywalking 默认情况会采集大量 trace 数据&#xff0c;这样可以比较全的追踪所有请求调用链路的请求&#xff0c;但同时对 ES 存储资源要求非常高&#xff0c;需要我们投入很大的存储节点才可以。那么有没有一种采样的请求上报的机制呢&#xff1f;答案是有的&#xff0…