ARM嵌入式linux复习心得总结(2)-- 2011.10.10 Evo Yang

2019-07-13 01:24发布

  2011.10.10 Evo Yang ARM嵌入式linux复习心得总结2: 一、文件编程综合实验—文件拷贝 这里的文件拷贝实验是在昨天创建文件的基础之上的综合练习,由于是Linux应用编程的基础所以要求要非常的熟练,而文件拷贝更是重点中的综合应用,因此详细分析一下如何使用库函数,实现文件copy的功能。同样使用Vmware虚拟机Linux环境使用vi编辑器创建file_cp.c文件输入代码: #include #include #include #include   #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 ”,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 ”,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个字节为零且包括‘