借助C语言小程序来解决大问题(转)[@more@]我们晓得C语言的功能十分强悍,很适宜编撰系统软件。借助它我们可以很容易地解决常常碰到的一些棘手的问题linux c语言小程序,如拷贝蕴涵或系统属性的文件(非常是光碟中的蕴涵文件)、在任意DOS版本或在windows中修改子目录的名称、在任意DOS版本中使用带空格的目录名等等。这种问题仅靠操作系统或常用的工具软件常常很难凑效。我们可以借助C语言的强悍功能来编撰一些小程序,才能很顺利地解决那些问题。
一、拷贝蕴涵或系统属性的文件
使用操作系统提供的拷贝命令不能拷贝蕴涵或系统属性的文件,由于在拷贝过程中系统会提示“Filenotfound”。下边的小程序可以解决这个问题。
//copyfile.c
#include$#@60;stdio.h$#@62;
#include$#@60;stdlib.h$#@62;
main(intargc,char*argv[])
{if(argc$#@60;3)
printf("用法:COPYFILE
$#@60;源文件名$#@62;$#@60;目标文件名$#@62;");
exit(1);
copy(argv[1],argv[2]);
copy(char*file1,char*file2)
charch;
FILE*fp1,*fp2;
if((fp1=fopen(file1,"rb"))==NULL)
printf("Cantopenfile%s",file1);
fclose(fp1);
return;
if((fp2=fopen(file2,"wb"))==NULL)
printf("Cantopenfile%s",file2);
fclose(fp1);
return;
ch=fgetc(fp1);
while(!feof(fp1))
fputc(ch,fp2);
ch=fgetc(fp1);
fclose(fp1);
fclose(fp2);
return;
二、在任意DOS版本或windows中修改子目录的名称
DOS只是在6.x版本中提供了修改子录名的程序。在windows中改目录名操作又很繁杂。下边的小程序可以很简单地修改任何一级子目录的名称,但是也可以拿来修改文件的名称。
#include"stdio.h"
main(intargc,char*argv[])
{intn;
if(argc$#@60;3)
printf("Requiredparametermissing");
exit(0);
n=rename(argv[1],argv[2]);
if(n==-1)
printf("Duplicatenameornamenotfound");
exit(0);
三、使用带空格的目录名
系统是用空格来分辨输入的DOS命令所带的参数,同样使用DOS的MD、CD、RD等命令也难以使用富含空格的目录名。并且在用CHKDSK命令对c盘进行检测时linux教程下载,对富含空格的子目录名并不给出错误信息。这说明在DOS中富含空格的目录名是有存在的合法性的。由于DOS中的命令未能使用含空格的目录名linux c语言小程序,所以可以起到一定的加密作用。下边的程序介绍怎样借助C语言来构建、进入和删掉富含空格的子目录。
/*文件名:mddir.c*/
#include$#@60;dir.h$#@62;
main(intargc,char*argv[])
{if(argc==2)
{if(mkdir(argv[1]))perror("Error");}
elseprintf("Usage:MDDIR+dirname");
return(0);
在程序使用中注意要用双冒号将目录名括上去,假如目录名中不富含空格可将双冒号省略。诸如:mddir"atest"。以下程序使用方式相同
/*文件名:cddir.c*/
#include$#@60;dir.h$#@62;
main(intargc,char*argv[])
{if(argc==2)
{if(chdir(argv[1]))perror("Error");}
elseprintf("Usage:CDDIR+dirname");
return0;
3、删除带空格的子目录
/*文件名:rddir.c*/
#include$#@60;dir.h$#@62;
main(intargc,char*argv[])
{if(argc==2)
{if(rmdir(argv[1]))perror("Error");}
elseprintf("Usage:RDDIR+dirname");
return0;
以上程序均用Turboc2.0调试通过,注意以上程序的文件名不要与DOS中的有关命令相同中国linux,以免发生冲突。