命令行参数有"*"号

painAndhappy 2005-06-15 10:00:38
程序 : test.c
代码如下 :
-------------------------------------------------------------
#include <stdio.h>

int main(int argc, char *argv[]) {

while (argc > 0) {
printf("argv[%d] : %s\n", argc - 1, argv[argc - 1]);
argc--;
}

system("PAUSE");
return 0;
}
-------------------------------------------------------------

存在问题 :
运行程序,输入 ======> test a b * c
此时,上面运行参数中的"*", 其输出的是该程序所在目录的所有文件名.

希望 :
运行 "test a b * c" ,可以如下输出
--------------------
argv[3] : c
argv[3] : *
argv[2] : b
argv[1] : a
argv[0] : test
--------------------
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
命令行写成 test a b \* c 就可以了哦
holymoon858 2005-06-16
  • 打赏
  • 举报
回复
nicknide(封月翔天)(表白被拒,郁闷) 正解!
chinaren2k 2005-06-16
  • 打赏
  • 举报
回复
指针数组呀 其中0里面存放的社会 文件名
后面都存放的是带的参数
牛知道 2005-06-16
  • 打赏
  • 举报
回复
你的问题跟 windows 和 unix,linux 的 shall 方式有关系
(例如: pro.exe a test * b)

在 unix/linx 下面,如果你用 * 系统会自动将当前目录下所有的文件作为参数赋给可执行程序
解决方法:你可以在输入参数的时候加入转意符 \ 形成 pro.exe a test \* b 即可

在 window 下面,如果你用 * 系统也会跟 unix/linux 下面的方法一致,你甚至可以输入
pro.exe ../* 这样系统会将上一级的目录作为参数赋给可执行程序
解决方法:你可以在输入参数的时候加入双引号形成 pro.exe a test "*" b 即可
painAndhappy 2005-06-15
  • 打赏
  • 举报
回复
写错了,希望输出是
--------------------
argv[4] : c
argv[3] : *
argv[2] : b
argv[1] : a
argv[0] : test
--------------------
agaric 2005-06-15
  • 打赏
  • 举报
回复
拜托 那要自己实现的。。。
nicknide 2005-06-15
  • 打赏
  • 举报
回复
楼上,楼主估计是在UNIX下做的,UNIX下的shell自动将*给展开,所以程序收不到*
不过可以使用''来夹住这个*就不会被展开了。
fflush 2005-06-15
  • 打赏
  • 举报
回复
我在vc7+winxp下测试你的程序,结果如你期望的一样,没有出现你说的情况
E:\project\temp\Release>test a b * c
argv[4] : c
argv[3] : *
argv[2] : b
argv[1] : a
argv[0] : test
jixingzhong 2005-06-15
  • 打赏
  • 举报
回复
MARK!!

没有发现什么错!!

怎么会和DOS一样输出呢??*==所有文件?

不应该啊!!




学习!!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧