来自argv的意外结果

时间:2015-09-27 08:55:22

标签: c

测试程序:

#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)

0 个答案:

没有答案