测试程序:
#include <stdio.h>
int main(int argc, char *argv[]){
switch (argc){
case 2:
printf("arg = %s\n", argv[1]);
return 0;
case 3:
printf("argv[1] = %s\n", argv[1]);
printf("argv[2] = %s\n", argv[2]);
return 0;
default:
printf ("argc %d\n", argc);
return -1;
}
}
当给程序一个5 *或1 *的参数时,它会给出意想不到的结果 否则正常。
$ argtst 5*
argv[1] = 532
argv[2] = 532~
$ argtst 1*
arg = 1437
$ argtst 4*
arg = 4*
$ argtst "5*"
arg = 5*
为什么?
(gcc版本4.2.1) (尝试过ksh,sh,bash和csh)