本文共 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;}
0123456789ABCDEF
转载地址:http://bepox.baihongyu.com/