【Linux】嵌入式开发,在Linux中使用C语言对标准I/O库文件的替换Copy

简介: <p><span style="white-space:pre"></span><span style="font-size:24px"><span style="white-space:pre"></span>首先,我专业是是电子工程专业,C语言每年都在用,可实际上,我大多数时间都用在网站开发上,没多少时间用于本专业,以及了解C语言更多的基础,所以,我C语言很差,真的很差。</span>

首先,我专业是是电子工程专业,C语言每年都在用,可实际上,我大多数时间都用在网站开发上,没多少时间用于本专业,以及了解C语言更多的基础,所以,我C语言很差,真的很差。

就本例,我在懵懵懂懂下,竟然错了差不多200+次的代码修改,操作近一千五次!仅仅47行的代码(包含注释!)!


如此,对于别人来说,真是感到不屑,不过,对于本人有着非常重要的心得体会!


题目要求:从源文件字符的中间起,5位开始显示!(我这里做了2位!)


案例是书本上的:

#define	BUFFER_SIZE	1024		/* 每次读写缓存大小 */
#define SRC_FILE_NAME	"src_file"	/* 源文件名 */
#define DEST_FILE_NAME	"dest_file"	/* 目标文件名文件名 */
#define OFFSET		10240		/* 拷贝的数据大小 */
int main()
{	FILE *src_file, *dest_file;
	unsigned char buff[BUFFER_SIZE];
	int real_read_len;	
	/* 以只读方式打开源文件 */
	src_file = fopen(SRC_FILE_NAME, "r");	
	/* 以只写方式打开目标文件,若此文件不存在则创建 */
	dest_file = fopen(DEST_FILE_NAME, "w");	
	if (!src_file || !dest_file)
	{	printf("Open file error\n");
		exit(1);	}	
	/* 将源文件的读写指针移到最后10KB的起始位置*/
	fseek(src_file, -OFFSET, SEEK_END);	
	/* 读取源文件的最后10KB数据并写到目标文件中,每次读写1KB */
	while ((real_read_len = fread(buff, 1, sizeof(buff), src_file)) > 0)
	{fwrite(buff, 1, real_read_len, dest_file);}	
	fclose(dest_file);
	fclose(src_file);
	return 0;	}


——————————————————————————————————————

我的源文件:

file.c

//by叶箫大人
//新浪微博 @叶箫大人 
//2015.6.12 
#include"unistd.h"
#include"sys/types.h"
#include"sys/stat.h"
#include"fcntl.h"
#include"stdlib.h"
#include"string.h"
#include"stdio.h"

#define buffersize 1024  //每次读写缓存大小
#define srcfiles "srcfile"//源文件名字
#define destfiles "destfile"//目标文件名
#define OFFSET 1024 //拷贝数据大小

int main()
{
	FILE *srcfile,*destfile;//定义指针 
	unsigned  char buff[buffersize];//定义数组buff 
	int realreadlen;				//定义字符长度 

//以只读方式打开源文件
srcfile = fopen(srcfiles, "r");
//以只写方式打开目标文件,若不存在则创建
destfile = fopen(destfiles, "w");
	if(!srcfile||!destfile)
	{
		printf("Oh,Sorry File Open Error!\n");
		exit(1);
	}
//读取源文件的最后10k的数据并写到目标文件中,每次读写1k

while((realreadlen = (fread(buff,1,sizeof(buff),srcfile)/2))>0)		
	{
		fseek(srcfile,-(realreadlen), SEEK_END);
		//14=总字符长度的减去中间要写的数值 
		realreadlen = (fread(buff,1,sizeof(buff),srcfile)+realreadlen-14);
		{   
			fwrite(buff,1,realreadlen,destfile);//写入destfile		
		}
	}
	fclose(destfile);//关闭destfile 
	fclose(srcfile);//关闭srcfile 
	return 0;
}

srcfile(源文件)

0123456789ABCDEF



目录
相关文章
|
16天前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
48 3
|
1月前
|
Linux 开发工具 git
Linux嵌入式系统中如何使用U-Boot实例
Linux嵌入式系统中如何使用U-Boot实例
26 0
|
1月前
|
Linux Android开发
嵌入式linux中Framebuffer 驱动程序框架分析
嵌入式linux中Framebuffer 驱动程序框架分析
26 0
|
28天前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
26 0
|
1月前
|
缓存 Ubuntu 网络协议
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
Linux系统编程之文件I/O函数的使用:介绍文件I/O函数的基本概念、用法和实现方式
20 1
|
3天前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
17天前
|
Linux
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
7 1
|
17天前
|
安全 Linux
嵌入式Linux系统关闭串口调试信息的输出
嵌入式Linux系统关闭串口调试信息的输出
13 1
|
17天前
|
Linux 编译器 网络安全
嵌入式Linux移植dropbear
嵌入式Linux移植dropbear
16 3