当前位置: 首页 > news >正文

嵌入式学习——Linux操作系统——文件编程练习


1.使用fread和fwrite方式完成任意普通文件的拷贝功能。
模拟 文件下载

#include <stdio.h>void do_copy(FILE *fp_s,FILE *fp_d)
{char buf[100] = {0};int ret;while (ret = fread(buf,sizeof(char),sizeof(buf),fp_s))fwrite(buf,sizeof(char),ret,fp_d);
}//./a.out src dest 
int main(int argc, const char *argv[])
{if (argc != 3){printf("Usage: %s <src> <dest>\n",argv[0]);return -1;}FILE *fp_s = fopen(argv[1],"r");FILE *fp_d = fopen(argv[2],"w");if (fp_s == NULL || fp_d == NULL){perror("fopen fail");return -1;}//创建空洞文件 fseek(fp_s,0,SEEK_END);long len = ftell(fp_s);//1.偏移 fseek(fp_d,len-1,SEEK_SET);//2.写 fputc('\0',fp_d);fflush(fp_d);//	getchar();rewind(fp_s);rewind(fp_d);do_copy(fp_s,fp_d);fclose(fp_s);fclose(fp_d);return 0;
}
#include <stdio.h>
#include <stdlib.h>//./a.out src dest 
int main(int argc, const char *argv[])
{if (argc != 3){printf("Usage: %s <src> <dest>\n",argv[0]);return -1;}FILE *fp_s = fopen(argv[1],"r");FILE *fp_d = fopen(argv[2],"w");if (fp_s == NULL || fp_d == NULL){perror("fopen fail");return -1;}//创建空洞文件 fseek(fp_s,0,SEEK_END);long len = ftell(fp_s);//1.偏移 fseek(fp_d,len-1,SEEK_SET);//2.写 fputc('\0',fp_d);fflush(fp_d);//	getchar();rewind(fp_s);rewind(fp_d);//	do_copy(fp_s,fp_d);char *buf = malloc(len);int ret = fread(buf,sizeof(char),len,fp_s);fwrite(buf,sizeof(char),ret,fp_d);fclose(fp_s);fclose(fp_d);return 0;
}


//1.打开
创建空洞文件
//2.拷贝
//3.关闭

2.实现插入功能,
指定要插入的位置 (如100个字节之后,)
指定要插入的内容 (如hello)
则最终效果是将 hell插入到了100个字节的后面


hello
a.定位到要插入的位置
后面的数据读走
b.重新定位到要插入的位置
输入数据
c.将刚才读走的数据写到插入数据的后面
 

#include <stdio.h>
#include <string.h>int main(int argc, const char *argv[])
{if (argc!= 2){printf("Usage: %s <file>\n",argv[0]);return -1;}FILE *fp = fopen(argv[1],"r+");if (fp == NULL){perror("fopen fail");return -1;}printf("Input a offset:");int offset;scanf("%d",&offset);getchar();printf("Input a string:");char buf[100];fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1] = '\0';fseek(fp,0,SEEK_END);long len = ftell(fp);fseek(fp,offset,SEEK_SET);char buff[len-offset];int ret = fread(buff,sizeof(char),sizeof(buff),fp);fseek(fp,offset,SEEK_SET);fwrite(buf,sizeof(char),strlen(buf),fp);fwrite(buff,sizeof(char),ret,fp);fclose(fp);return 0;
}


3.统计文本文件中a-z,出现的次数。
a:12
b:23
c:
z:34

#include<stdio.h>  int main(int argc, const char *argv[])  
{  if (argc != 2) {  printf("Usage: %s <filename>\n", argv[0]);  return 1;  }  FILE *fp = fopen(argv[1], "r");  if (fp == NULL) {  perror("Error opening file");  return 1;  }  int a[26] = {0};  char b;  while ((b = fgetc(fp)) != EOF)  {  if (b >= 'a' && b <= 'z')  {  a[b - 'a']++;  }  }  int i = 0;  for (i = 0; i < 26; ++i)  {  printf("%c:%d\n", 'a' + i, a[i]);  }  fclose(fp);  return 0;  
}


4. 完成两个文件的合并操作。
./a.out 1.txt 2.txt 3.txt

#include<stdio.h>  int main(int argc, const char *argv[])  
{  if (argc != 4) {  printf("Usage: %s <filename><filename><filename>\n", argv[0]);  return -1;  }  FILE *fp1 = fopen(argv[1], "r"); FILE *fp2 = fopen(argv[2], "r"); FILE *fp3 = fopen(argv[3], "a+"); if (fp1 == NULL||fp2 == NULL ||fp3 == NULL) {  perror("Error opening file");  return -1;  }  char buf1[1024];char buf2[1024];int num1 = fread(buf1,1,sizeof(buf1),fp1);fwrite(buf1,1,num1,fp3);int num2 = fread(buf2,1,sizeof(buf2),fp2);fseek(fp3,num1,SEEK_SET);fwrite(buf2,1,num2,fp3);fclose(fp1);fclose(fp2);fclose(fp3);return 0;  
}

相关文章:

嵌入式学习——Linux操作系统——文件编程练习

1.使用fread和fwrite方式完成任意普通文件的拷贝功能。 模拟 文件下载 #include <stdio.h>void do_copy(FILE *fp_s,FILE *fp_d) {char buf[100] {0};int ret;while (ret fread(buf,sizeof(char),sizeof(buf),fp_s))fwrite(buf,sizeof(char),ret,fp_d); }//./a.out sr…...

用JavaScript实现了一个简单的图像坐标点标注工具

这段代码实现了一个简单的图像标注工具&#xff0c;允许用户在加载的图像上进行点选标注&#xff0c;并且通过右键确认一个点序列来形成一个多边形。 标注效果如下 实现代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"U…...

Pytorch深度解析:Transformer嵌入层源码逐行解读

前言 本部分博客需要先阅读博客&#xff1a; 《Transformer实现以及Pytorch源码解读&#xff08;一&#xff09;-数据输入篇》 作为知识储备。 Embedding使用方式 如下面的代码中所示&#xff0c;embedding一般是先实例化nn.Embedding(vocab_size, embedding_dim)。实例化的…...

HSP_10章 Python面向对象编程oop_基础部分

文章目录 P107 类与实例的关系1.类与实例的关系示意图2.类与实例的代码分析 P109 对象形式和传参机制1. 类与对象的区别和联系2. 属性/成员变量3. 类的定义和使用4. 对象的传递机制 P110 对象的布尔值P111 成员方法1. 基本介绍2. 成员方法的定义和基本使用3.注意事项和使用细节…...

JavaWeb系列十七: jQuery选择器 上

jQuery选择器 jQuery基本选择器jquery层次选择器基础过滤选择器内容过滤选择器可见度过滤选择器 选择器是jQuery的核心, 在jQuery中, 对事件处理, 遍历 DOM和Ajax 操作都依赖于选择器jQuery选择器的优点 $(“#id”) 等价于 document.getElementById(“id”);$(“tagName”) 等价…...

Gone框架介绍30 - 使用`goner/gin`提供Web服务

gone是可以高效开发Web服务的Golang依赖注入框架 github地址&#xff1a;https://github.com/gone-io/gone 文档地址&#xff1a;https://goner.fun/zh/ 使用goner/gin提供Web服务 文章目录 使用goner/gin提供Web服务注册相关的Goners编写Controller挂载路由路由处理函数io.Rea…...

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据&#xff0c;优化了分类算法&#xff0c;支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类&#xff1b;一键生成危险点报告和交跨报告&#xff1b;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:289…...

STM32学习之一:什么是STM32

目录 1.什么是STM32 2.STM32命名规则 3.STM32外设资源 4. STM32的系统架构 5. 从0到1搭建一个STM32工程 学习stm32已经很久了&#xff0c;因为种种原因&#xff0c;也有很久一段时间没接触过stm32了。等我捡起来的时候&#xff0c;发现很多都已经忘记了&#xff0c;重新捡…...

AI绘画Stable Diffusion 超强一键去除图片中的物体,免费使用!

大家好&#xff0c;我是设计师阿威 在生成图像时总有一些不完美的小瑕疵&#xff0c;比如多余的物体或碍眼的水印&#xff0c;它们破坏了图片的美感。但别担心&#xff0c;今天我们将介绍一款神奇的工具——sd-webui-cleaner&#xff0c;它可以帮助我们使用Stable Diffusion轻…...

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据…...

Github上前十大开源Rust项目

在github上排名前十的Rust开源项目整理出来与大家共享&#xff0c;以当前的Star数为准。 Deno Deno 是 V8 上的安全 TypeScript 运行时。Deno 是一个建立在V8、Rust和Tokio之上的 JavaScript、TypeScript 和 WebAssembly 的运行时环境&#xff0c;具有自带安全的设置和出色的开…...

硬件开发笔记(二十):AD21导入外部下载的元器件原理图库、封装库和3D模型

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139707771 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

竞赛选题 python opencv 深度学习 指纹识别算法实现

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python opencv 深度学习 指纹识别算法实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;4分创新点&#xff1a;4分 该项目较为新颖…...

RK3568开发笔记(三):瑞芯微RK3588芯片介绍,入手开发板的核心板介绍

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139905873 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统

版权声明&#xff1a;本文为本文为博主原创文章&#xff0c;转载请注明出处 https://www.cnblogs.com/wsg1100 如有错误&#xff0c;欢迎指正。 本文简单介绍如何将 igh 移植到 zephyr、freertos、rtems、rtthread等RTOS &#xff0c;甚至 windows 上。 ##前言 目前&#xff0…...

ansible copy模块参选选项

copy模块用于将文件从ansible控制节点&#xff08;管理主机&#xff09;或者远程主机复制到远程主机上。其操作类似于scp&#xff08;secure copy protocol&#xff09;。 关键参数标红。 参数&#xff1a; src:&#xff08;source&#xff1a;源&#xff09; 要复制到远程…...

展厅设计主要的六大要素

1、从创意开始 展示设计的开始必须创意在先。根据整体的风格思路进行创意&#xff0c;首先要考虑的是主体的造型、大小高度位置以及它和周围展厅的关系。另外其他道具设计制作与运作方式也必须在创意中有明确的体现。 2、平面感 平面感是指对展示艺术设计平面图纸审美和功能两个…...

【数据结构与算法】最小生成树,Prim算法,Kruskal算法 详解

最小生成树的实际应用背景。 最节省经费的前提下&#xff0c;在n个城市之间建立通信联络网。 Kruskal算法&#xff08;基于并查集&#xff09; void init() {for (int i 1; i < n; i) {pre[i] i;} }ll root(ll a) {ll i a;while (pre[i] ! i) {i pre[i];}return i p…...

【启明智显产品分享】Model3工业级HMI芯片详解系列专题(三):安全、稳定、高防护

芯片作为电子设备的核心部件&#xff0c;&#xff0c;根据不同的应用领域被分为不同等级。工业级芯片适用于工业自动化、控制系统和仪器仪表等领域&#xff0c;对芯片的安全、稳定、防护能力等等有着较高的要求。这些芯片往往需要具备更宽的工业温度范围&#xff0c;能够在更恶…...

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

【面试干货】Java中的四种引用类型&#xff1a;强引用、软引用、弱引用和虚引用 1、强引用&#xff08;Strong Reference&#xff09;2、软引用&#xff08;Soft Reference&#xff09;3、弱引用&#xff08;Weak Reference&#xff09;4、虚引用&#xff08;Phantom Reference…...

基于全志T527开发板的手势识别:OpenCV部署与轮廓匹配实战

1. 项目概述与硬件平台选择最近在做一个嵌入式视觉项目&#xff0c;需要在一块开发板上实现实时的手势识别功能。选型时&#xff0c;我重点考察了算力、接口丰富度和社区支持。最终&#xff0c;米尔电子的MYD-LT527开发板进入了我的视线。这块板子核心是全志T527处理器&#xf…...

如何在Windows 11上完美运行经典游戏:DDrawCompat终极兼容性解决方案

如何在Windows 11上完美运行经典游戏&#xff1a;DDrawCompat终极兼容性解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mir…...

零依赖STL转STEP工具:5分钟实现3D格式无缝转换的完整指南

零依赖STL转STEP工具&#xff1a;5分钟实现3D格式无缝转换的完整指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在数字化制造和工程设计的交叉领域&#xff0c;STL到STEP格式转换已成为连…...

基于MCP协议构建Azure DevOps智能助手:连接AI与开发运维的实践指南

1. 项目概述&#xff1a;一个连接开发与运维的智能“翻译官”如果你和我一样&#xff0c;长期在Azure DevOps的流水线、看板和代码仓库里打转&#xff0c;同时又对新兴的AI编程助手&#xff08;比如Claude、Cursor&#xff09;爱不释手&#xff0c;那你肯定遇到过这样的困境&am…...

如何轻松搞定浏览器视频下载:3步安装免费插件完全指南

如何轻松搞定浏览器视频下载&#xff1a;3步安装免费插件完全指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网页视频而烦…...

蓝桥杯嵌入式CT117E-M4实战指南:从零搭建CubeMX开发环境

1. 为什么选择CubeMX开发环境 第一次接触蓝桥杯嵌入式竞赛的同学&#xff0c;往往会被各种开发工具搞得晕头转向。我当年备赛时&#xff0c;光是搭建开发环境就折腾了两天。直到后来发现了STM32CubeMX这个神器&#xff0c;开发效率直接翻倍。简单来说&#xff0c;CubeMX就像是…...

STM32F407霸天虎开发板I2C驱动OLED避坑指南:从CubeMX配置到显示中文全流程

STM32F407霸天虎开发板I2C驱动OLED避坑指南&#xff1a;从CubeMX配置到显示中文全流程 在嵌入式开发中&#xff0c;OLED显示屏因其高对比度、低功耗和轻薄特性成为许多项目的首选显示方案。本文将深入探讨如何基于STM32F407霸天虎开发板&#xff0c;通过HAL库和I2C接口高效驱动…...

Scroll Reverser深度解析:macOS输入设备独立滚动控制实现原理与技术架构

Scroll Reverser深度解析&#xff1a;macOS输入设备独立滚动控制实现原理与技术架构 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser Scroll Reverser是一款解决macOS系统滚动方向…...

Page Assist终极指南:5分钟为浏览器安装本地AI助手,彻底告别云端依赖

Page Assist终极指南&#xff1a;5分钟为浏览器安装本地AI助手&#xff0c;彻底告别云端依赖 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 想要…...

【资讯】《二〇二五年中国知识产权保护状况》白皮书正式发布

2026年5月7日&#xff0c;《二〇二五年中国知识产权保护状况》白皮书正式发布&#xff0c;呈现了2025年中国知识产权保护工作进展&#xff0c;系统介绍制度建设、审批登记、文化建设、国际合作等方面的扎实成果&#xff0c;为社会各界和国际社会了解中国知识产权保护最新实践提…...