unlink的原型在”io.h”中,其调用方法为unlink(filename,功能为删除由filename指定的文件.一般调用方法如例1所示。
例1.删除某一目录下符合给定条件的文件
1 #include<dir.h> 2 void main(int argc,char *argv[]) 3 {int done; 4 strUCt ffblk f; 5 if(argc!=2) exit(0); 6 done=findfirst(argv[1],&f,0); 7 if(!done) 8 {if(f.ff_attrib!=0x10) 9 {unlink(f.ff_name); 10 while(!findnext(&f)) 11 {if(f.ff_attrib!=0x10) 12 {unlink(f.ff_name); 13 }}} 14 else while(!findnext(&f)) 15 {if(f.ff_attrib!=0x10) 16 {unlink(f.ff_name); 17 }}}} |
#include<stdio.h> #include<mem.h> #include<string.h> void main(void) {int i; static char dest[7]=”First”; static char src[]=”Second”; printf(”\nTarget string 1 is :%s”,dest); memcpy(dest,src,3); printf(”\nTarget string 2 is :%s”,dest); memcpy(dest,src,strlen(src)); printf(”\nTarget string 3 is :%s”,dest); } 本程序输出结果应为:Target string 1 is:First Target string 2 is:Sec Target string 3 is:Second 但实际输出结果却是:Target string 1 is:First Target string 2 is:Secst Target string 3 is:Second |
if(strlen(dest)>n) {for(i=0;dest[i]!=’\0’;i++) dest[i]=’ ’;/*将dest赋空格*/ dest[i]=’\0’; memcpy(dest,src,n); } else memcpy(dest,src,n); |
当然,也可自编一memcpy函数以代替库函数memcpy,由于篇幅所限,就不给出笔者自编的mcpy函数.与memcpy函数存在同样问题的函数还有memmove函数,经过上述方法处理后亦可获得正确结果。
为了在程序中实现文件或子目录的搜索,显示或删除,C语言中一般是借助于findfirst及findnext库函数来实现的.从杂志,报纸(如软件报)发表的大部分该类应用程序来看,大部分是采用如例3第11-19行所示的调用方法。
例3.编程要求与例1相同
1 #include<dir.h> 2 void main(int argc,char *argv[]) 3 {char path[MAXPATH],path1[MAXPATH]; 4 char drive[MAXDRIVE],dir[MAXDIR],name[MAXFILE],ext[MAXEXT]; 5 int done; 6 struct ffblk f; 7 if(argc!=2) exit(0); 8 fnsplit(argv[1],drive,dir,name,ext); 9 strcpy(path,drive); 10 strcat(path,dir); 11 done=findfirst(argv[1],&f,0); 12 while(!done) 13 {if(f.ff_attrib!=0x10) 14 {strcpy(path1,path); 15 strcat(path1,f.ff_name); 16 unlink(path1); 17 done=findnext(&f); 18 } 19 done=findnext(&f); 20 }} |