计算机等级考试二级C语言程序设计技巧

计算机等级考试二级C语言程序设计技巧,第1张

计算机等级考试二级C语言程序设计技巧,第2张

许多应用软件使用命令行参数运行。其实这些命令行参数也可以在C语言编写的程序中实现。灵活使用命令行参数,可以有效提高程序的运行效率,事半功倍。

在C中,命令行参数与程序的主函数相关:main (int argc,char * argv []),其中int argc表示命令行参数的个数(包括可执行程序名本身),char * argv []表示每个参数的具体内容,argv[0]是命令行中可执行程序名本身,argv[1]是命令行中第二个参数的内容。以下示例输出命令行参数的数量和内容:

main (int argc,char *argv[],

{ int I;

printf(“/n”命令行中的可执行文件名称是:% s’,argv[0]);

Printf('/n总共有% d个参数:',argc);

I = 0;

while(argc>=1)

{ printf("% s ',argv[i++]);

argc-;}

}

命令行参数多用于带盘符、路径或文件名的命令行,如dir a:,等。因此,灵活处理此类参数可以有效提高程序的运行效果。例如,dir命令后面可以跟一个驱动器号、一个路径或一个文件名。这个参数怎么区分?请看下面的例子(这个程序模拟了dir命令,程序要求你在命令行输入一个参数:驱动器号或者路径或者文件名。如果没有参数或有多个参数,则默认参数为“*”。* "将被采用)。

/* -

功能:模拟dir命令处理命令行参数

- */

#包括

#包括

#包括

#包含

int j,num = 0;

char ss[20],path而(!完成),path 2[50];

void main (int argc,char *argv[])

{

结构ff blk f;

int done

If (argc = = 2)/*将命令行参数放入数组*/

strcpy(ss,argv[1]);

其他

strcpy(ss,"*。*″);/*将默认参数分配给数组*/

if((ss[strlen(ss)-1]= = '/' | |((ss[strlen(ss)-1]= = ':'))

strcat(ss,"*。*″);/*如果参数是路径或字母,请添加“*”。*" */

getcwd(path1,50);/*采用当前路径*/

If (chdir (SS) = = 0)/*确定参数是否为路径*/

strcat(ss,'//*。*');/*如果路径末尾没有“/”,请添加“*”。*' */

chdir(path 1);/*恢复原始路径*/

strcpy(path2,ss);

for(j = strlen(path 2);j > 0;J-)/*将参数中的路径提取到Path2 */

{ if((path 2[j]= = '//'))| |(path 2[j]= = ':'){

path 2[j+1]= '/0 ';

goto senull}

}

path 2[0]= '/0 ';

senull:

If (strlen (path2) = = 0)/*如果给定参数中没有路径,则采用当前路径*/

strcpy(path2,path 1);

Printf ('/n * * simulate dir * */n命令目录路径% s ',path 2);

done=findfirst(ss,&f,55);/*查找第一个匹配的文件*/

j = 1;

[50]

{if (f.ff_attrib!= 0x10)/*如果文件属性不是目录*/

printf('/n %15s %20ld ',f.ff_name,f . ff _ fsize);

其他

printf('/n &11s

,f . ff _ name);

num++;

j++;

如果(j==23)

Printf ('/n-more(按任意键继续)-');

getch();

j = 0;

Printf ("/n(目录路径% s)",path 2);}

done = findnext(& f);/*查找下一个匹配的文件*/

}

printf("/n当前目录中有% d个文件。/n ",num);

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 计算机等级考试二级C语言程序设计技巧

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情