文档详情

ARM嵌入式linux复习心得总结2.doc

发布:2017-07-12约2.61千字共4页下载文档
文本预览下载声明
2011.10.10 Evo Yang ARM嵌入式linux复习心得总结2: 一、—文件拷贝 这里的文件拷贝实验是在昨天创建文件的基础之上的综合练习,由于是Linux应用编程的基础所以要求要非常的熟练,而文件拷贝更是重点中的综合应用,因此详细分析一下如何使用库函数,实现文件copy的功能。同样使用Vmware虚拟机Linux环境使用vi编辑器创建file_cp.c文件输入代码: #includestdio.h #includestdlib.h #includestring.h #includestrings.h #define BUFFER_SIZE 1024 //定义buffer的空间长度 Int main(int argc,char *argv[]) { FILE *from_file; //定义一个FILE类型的变量方便以后对文件的操作 FILE *to_file; long file_len = 0; //记录文件大小作为数据传送的指标 char buffer[BUFFER_SIZE] //定义一个字符数据存储空间大小为BUFFER_SIZE char *ptr; if(argc! = 3) //argc表示字符串数量,这里一共应该有3个字符串(命令字符)故首先判断用户使用的命令是否正确(这个if语句常在Linux编程中出现,而且位置都差不多,因此最好将他记住便于后期编程使用) { Printf(“Usage:%s fromfile tofile\n”,argv[0]); Exit(1); //切记‘1’是出错返回 } If((from_file = fopen(argv[1],”rb”))==NULL) //打开from_file文件,并将地址赋给from_file判断是否打开成功 { Printf(“open %s error”,argv[2]); Exit(1); } If((to_file=(argv[2],”wd”)) == NULL) //同上 { Printf(“open %s error”,argv[2]); Exit(1); } /*测的文件大小*/ Fseek(from_file,0L,SEEK_END); File_len = ftell(from_file); Fseek(from_file,0L,SEEK_SET); Printf(“from file size is %d\n”,file_len); /*文件拷贝!*/ While(!feof(from_file)) { Fread(buffer,BUFFER_SIZE,1,from_file); If(BUFFER_SIZE=file_len) { Fwirte(buffer,file_len,1,to_file); } Else { Fwrite(buffer,BUFFER_SIZE,1,to_file); File_len = file_len – BUFFER_SIZE; } Bzero(buffer,BUFFER_SIZE); //置字节字符串buffer的前BUFFER_SIZE个字节为零且包括‘\0’。 } Fclose(from_file);//关闭文件 Fclose(to_file); Exit(0); } 注: Bzero 用法(摘自百度百科/view/1026871.htm 这个解释比较清楚明了) 原型:extern void bzero(void *s, int n);   用法:#include string.h   功能:置字节字符串s的前n个字节为零且包括‘\0’。   说明:bzero无返回值。   举例:   // bzero.c   /* bzero函数TC和VC中都没有,gcc中提供了 */   #include stdio.h   #include string.h   int main( void )   {   struct   {   int a;   char s[5];   float f;   } tt;   char s[20];   bzero( tt, sizeof( tt ) );   bzero( s, 20 );   printf( Initial success. );   getchar();   return 0; } 总结:文件的编程作为Linux系统编
显示全部
相似文档