博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Linux】嵌入式开发,在Linux中使用C语言对标准I/O库文件的替换Copy
阅读量:5978 次
发布时间:2019-06-20

本文共 1979 字,大约阅读时间需要 6 分钟。

首先,我专业是是电子工程专业,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的数据并写到目标文件中,每次读写1kwhile((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

转载地址:http://bepox.baihongyu.com/

你可能感兴趣的文章
vue中v-for循环如何将变量带入class的属性名中
查看>>
PHP 安全问题入门:10 个常见安全问题 + 实例讲解
查看>>
Leetcode03
查看>>
Mysql常用命令
查看>>
Vuex的基本使用
查看>>
在DigitalOcean玩Kubernetes(K8S)
查看>>
双机概念
查看>>
php excel
查看>>
一些设计思想的汇集(2)
查看>>
GRUB and LVM and EVMS
查看>>
List集合的迭代器方法
查看>>
ECShop替换FCKeditor编辑器为KindEditor
查看>>
oracle 11g EM停止后无法启动
查看>>
面向对象是软件开发范式的根本性颠覆: 主体建模, 非目标导向, 松耦合, 非逻辑分解, 软件进化...
查看>>
OSI七层模型和TCP/IP四层模型
查看>>
ceph学习笔记之七 数据平衡
查看>>
windows下的php的memcache扩展的安装及memcache最新下载地址
查看>>
YOLOv3: 训练自己的数据(绝对经典版本1)
查看>>
POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》
查看>>
Could not find artifact com.sun:tools:jar:1.5.0 解决办法
查看>>