全国计算机等级考试二级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命令处理命令行参数
- */[/br
char ss[20],path[50],path 2[50];
void main (int argc,char * argv[])
{
struct ff blk f;
int done;
if(argc==2) /*将命令行参数带入数组*/
strcpy(ss,argv[1]);
else
strcpy(ss,"*。*″);/*指定默认参数*/
If((ss[strlen(ss)-1]= ' \ \ ' | |((ss[strlen(ss)-1]= ':')
strcat(ss/*如果参数是路径或字母,则添加" *。* * */
get CWD(path 1,50);/*取当前路径*/
if (chdir(ss)==0) /*判断参数是否为路径*/
strcat(ss," \*。* ");/*如果路径末尾没有“\”,请添加“*”。*" */

chdir(path 1);/*恢复原路径*/
strcpy(path2,ss);
for(j = strlen(path 2);j > 0;J-)/*提取参数中的路径到path 2 */
{ if((path 2[j]= ' \ \ ')| |(path 2[j]= ':'){
path 2[j+1]=
goto se null;}
}
path 2[0]= ' \ 0 ';
se null:
If(strlen(path 2)= = 0)/*如果给定参数中没有路径,则取当前路径*/
strcpy(path2,path 1);
printf(" \ n * * Simulate dir * * \ n命令目录路径% s ",path 2);
done=findfirst(ss,&f,55);/*查找第一个匹配的文件*/
j = 1;
while(!done)
{if (f.ff_attrib!=0x10) /*如果文件属性不是directory */
printf(" \ n % 15s % 20ld ",f.ff _ name,f . ff _ fsize);
else
printf("\n &11s ",f . ff _ name);
num++;
j++;
if(j = = 23)
printf(" \ n-more(按任意键继续)-");
getch();
j = 0;
printf ("\ n(目录路径% s)",path 2);}
done = findnext(& f);/*查找下一个匹配文件*/
}
printf(" \ n当前目录中有% d个文件。\ n ",编号)

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

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情