计算机等级考试二级C语言程序设计技巧
许多应用软件使用命令行参数运行。其实这些命令行参数也可以在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);
0条评论