ARM嵌入式linux复习心得总结2.doc
文本预览下载声明
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系统编
显示全部