C语言中如何接收*等通配符参数

notmmao 发布于 2015/10/27 19:30
阅读 631
收藏 0
GCC
先看代码,逻辑很简单,打印main函数的所有传入参数.
/*
gcc test.c
./a.out 1 2 h*
*/

#include <stdio.h> 

int main(int argc, char* argv[]) {	
    int i=0;
    for(i=0; i<argc; i++) {
        printf("argv[%d]=%s\n", i, argv[i]);
    }
    return 0;
}

我期望看到的结果:

./a.out 1 2 h*

argv[0]=./a.out
argv[1]=1
argv[2]=2
argv[3]=h*


实际看到的结果:(除了1,2之外,系统把当前目录的所有h开头的文件名以参数传入程序)

./a.out 1 2 h*
argv[0]=./a.out
argv[1]=1
argv[2]=2
argv[3]=hello
argv[4]=havege.h
argv[5]=havege_test.c
argv[6]=havege_test.o
argv[7]=home.html
argv[8]=ht
argv[9]=ht.log

补充: 在win7和ubuntu下都运行过,情况相当.
加载中
0
明月惊鹊
明月惊鹊
./a.out 1 2 “h*”
n
notmmao
good! 经测试,在ubuntu下正常运行. 但是在win7的cmd下还是没有达到目标.看来应该是shell的问题.
0
木兰宿莽
木兰宿莽

这是shell的原因吧,不是所有的情况都是通配符的意思的


返回顶部
顶部