1","");
//判断最后是否写入
if(n_chars == -1)
oops("Read error from,path1","");
//关闭文件
if(close(in_fd) == -1||close(out_fd) == -1)
oops("Error closing files","");
}
void oops(char *s1,char *s2)
{
fprintf(stderr,"Error:%s ",s1);
perror(s2);
exit(1);
}
int exists(char *filename)
{
return access(filename,F_OK);
}
int is_file(char *filename)
{
struct stat filebuf;
stat(filename,&filebuf);
if(S_ISREG(filebuf.st_mode))
return 1;
else
return 0;
}
char *deal_with(char *filename,char *filename2)
{
char *file=NULL;;
if((file = (char *)malloc(strlen(basename(filename))+strlen(filename2)+3)) == NULL)
perror("malloc error");
else{
if(filename2[strlen(filename2)-1] == '/'){
strcpy(file,filename2);
strcat(file,basename(filename));
}else{
strcpy(file,filename2);
strcat(file,"/");
strcat(file,basename(filename));
}
}
return file;
}
char *deal_path(char *file,char *file2)
{
char *filename=NULL;
if((filename = (char *)malloc(strlen(file)+strlen(file2)+3)) == NULL)
perror("Malloc erro:");
else{
if(file[strlen(file)-1] == '/'){
strcpy(filename,file);
strcat(filename,file2);
}else{
strcpy(filename,file);
strcat(filename,"/");
strcat(filename,file2);
}
}
return filename;
}
用的最多的还是这个deal_path这个函数,这个函数会判断/tmp/ /tmp这个的区别,最终会将给出的
两个参数合并成一个文件路径创建并写入要拷贝的内容。
四:总结
C语言基础很重要,最近在看C专家编程,C和指针,感触很深里面很多C语言的细节我都不知道。还有linux C编程实战中的关于结构体的字节对齐我也知之甚少。后期会用博客记录相关内容加深自己对这些内容的理解。