Watcom C 的笔记6 Watcom C (6)
命令行参数的获得 标准C语言定义如下: int main(int argc,char *argv[])。 第一个字符串 argv[0] 是包含全路径的程序名。 #include <stdio.h> int main(int argc,char *argv[]) { int i; printf("You have input %d arguments. Argv[0]=[%s]\n",argc-1,argv[0]); //argv[0] is file name for (i=1;i<argc;i++) { printf("argument %d:[%s]\n",i,argv[i]); } return 0; } G:\>getarg /L p oo.bak DOS/4GW Protected Mode Run-time Version 1.97 Copyright (c) Rational Systems, Inc. 1990-1994 You have input 3 arguments. Argv[0]=[G:\GETARG.EXE] argument 1:[/L] argument 2:[p] argument 3:[oo.bak] 修改一下,枚举文件和目录的例子: #include <stdio.h> #include <dos.h> int main(int argc,char *argv[]) { struct find_t fileinfo; unsigned rc; /* Display name and size of "*.c" files */ rc=_dos_findfirst("*.*",_A_NORMAL+_A_RDONLY+_A_HIDDEN+_A_SYSTEM+_A_SUBDIR,&fileinfo); while ( rc == 0) { //take care of this: the priority of "==" is higher than "&" if ((fileinfo.attrib & _A_SUBDIR)==0) {printf("%14s %10ld\n",fileinfo.name,fileinfo.size);} //File else {printf("%14s <DIR>\n",fileinfo.name);} //Directory rc= _dos_findnext(&fileinfo); } return 0; } 运行结果: RDTSC.C 429 PCI <DIR> PRACTICE <DIR> GETCHAR.EXE 33236 COMP.BAT 107 GETCHAR.OBJ 483 PTEST.C 667 HELLO.C 86 NOTE <DIR> PTEST.OBJ 551 PTEST.EXE 33256 GETARG.C 257 EMUFILE.C 596 MAIN.EXE 33372 MAIN.OBJ 504 R.TXT 1543 GETARG.OBJ 526 HELLO.OBJ 409 EMUFILE.EXE 33384 EMUFILE.OBJ 574 HELLO.EXE 33216 MEMTEST.OBJ 464 HELLO.ERR 54 Z.t 2008-1-19