请教命令行参数

u010179812 2013-04-10 10:40:49
我不会用命令行参数,百度了数下也没有懂明白,还是进来问一下。请看下面程序:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"

int main(int argc, char *argv[])
{
int i;
for(i=0;i<argc;i++)
{
printf("%s%c", argv[i], (i<argc-1)?' ':'\n');
}

return 0;
}

编译后的结果是
E:\Microsoft Visual Studio\MyProjects\1\Debug\1.exe
Press any key to continue

百度后知道要去DOS里操作,然后“运行”cmd进去,因为我是存在E盘中,所以就弄成
E:\>Microsoft Visual Studio\MyProjects\1\Debug\1.exe
这以后怎么输入呢?

另,命令行参数在C语言中有什么用呢?编写什么程序非用它不可?

...全文
206 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_play 2013-04-11
  • 打赏
  • 举报
回复
引用 15 楼 zhao4zhong1 的回复:
命令行参数之间用至少一个空格间隔,这是常识。 如果参数内容有空格,将其用半角双引号括住,这是知识。 关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一……
hao
赵4老师 2013-04-11
  • 打赏
  • 举报
回复
命令行参数之间用至少一个空格间隔,这是常识。 如果参数内容有空格,将其用半角双引号括住,这是知识。 关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习” 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
super_admi 2013-04-11
  • 打赏
  • 举报
回复
底子不是一般的弱啊,可怜的娃,被WINDOWS给害惨了,建议你玩玩LINUX,不要安装桌面。
引用 13 楼 u010179812 的回复:
我自己也在网上搜了很多次,没有人特别强调到这一点。正是这一点难住了我。
「已注销」 2013-04-11
  • 打赏
  • 举报
回复
提前我不是附和,但我确实同意15楼观点。作为干程序的,不知道绝对路径/相对路径,不知道命令行参数带空格的必须加引号,确实还不能称作一个合格的程序员。 E:\Microsoft Visual Studio\MyProjects\1\Debug\1.exe 1 2 3 你让操作系统认为是你执行 E:\Microsoft 带参数 “Visual”、“Studio\MyProjects\1\Debug\1.exe”、“1”、“2”、“3”,还是 E:\Microsoft Visual 带参数 “Studio\MyProjects\1\Debug\1.exe”、“1”、“2”、“3”,还是……此处略去N个字……呢?
xiaoji0507 2013-04-10
  • 打赏
  • 举报
回复
引用 4 楼 u010179812 的回复:
试了,还是不成功。如下显示: E:\>Microsoft Visual Studio\MyProjects\1\Debug\1.exe asd asd fgh 'Microsoft' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 我想应该输入一下先输入一个数字,然后再输入字符串,又试,还是不成功。 E:\>Microsoft Visua……
你直接把你的.exe文件拖到黑框中。然后输入 然后再回车
www_adintr_com 2013-04-10
  • 打赏
  • 举报
回复
"Microsoft Visual Studio\MyProjects\1\Debug\1.exe" asd asd fgh 路径有空格时加引号.
ttsping 2013-04-10
  • 打赏
  • 举报
回复
vs里面:项目,属性,调试,命令行参数,写上参数后点应用就行了。 手动的话,路径中有空格的话用""包含,可以直接把1.exe从资源管理器拖到cmd窗口。
u010179812 2013-04-10
  • 打赏
  • 举报
回复
试了,还是不成功。如下显示: E:\>Microsoft Visual Studio\MyProjects\1\Debug\1.exe asd asd fgh 'Microsoft' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 我想应该输入一下先输入一个数字,然后再输入字符串,又试,还是不成功。 E:\>Microsoft Visual Studio\MyProjects\1\Debug\1.exe 3 asd fgh ghj 'Microsoft' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 是怎么回事呢?
tonforce 2013-04-10
  • 打赏
  • 举报
回复
如1楼所言,每个参数之间有个空格 可以在for语句那行下个断点,输入参数回车后,看看argc,argv的值情况
lin5161678 2013-04-10
  • 打赏
  • 举报
回复
参见 ping 192.168.0.1
xiaoji0507 2013-04-10
  • 打赏
  • 举报
回复
E:\>Microsoft Visual Studio\MyProjects\1\Debug\1.exe 1 2 3 4 5 6 7 注:1 2 3 4 5 6 7 可以换成任意输入
u010179812 2013-04-10
  • 打赏
  • 举报
回复
我自己也在网上搜了很多次,没有人特别强调到这一点。正是这一点难住了我。
u010179812 2013-04-10
  • 打赏
  • 举报
回复
确实成功实现了,6楼所说是要加上引号。但是我发觉加引号也不简单,所以我才多次发问。 但是我最后一次加引号成功了,我才明白是怎么回事。原来在后面的引号后面要加空格。我之前没有加空格,就出现这种结果: E:\>"Microsoft Visual Studio\MyProjects\1\Debug\1.exe"asd fgh jkl '"Microsoft Visual Studio\MyProjects\1\Debug\1.exe"asd' 不是内部或外部命令,也不 是可运行的程序 或批处理文件。 最后一次成功了,才找出原因。 E:\>"Microsoft Visual Studio\MyProjects\1\Debug\1.exe " asd fgh jkl Microsoft Visual Studio\MyProjects\1\Debug\1.exe asd fgh jkl 楼上的各位都有指出问题,但是没有特别明示我在引号后面要加空格,虽然您们的表达式上都有明示要加空格,都没有特别强调这一点,是让我自己去看见,我确实没有看到。最终试着试着,感受到了,然后去看,看到了。也许您们觉得不需要强调这一点呀,都是应该加上空格的呀,但是我没有看到书上哪里说到要加空格,所以就直接紧挨着输入字符串了。我知道参数与参数之间要加空格这个没问题,必须的,但是后面那个引号后面要加空格我就没有注意了,也觉得加不加没有关系,反而觉得不加好,因为已经有引号作为间隔了。 说不定其他新手也会出现这个问题。
无间虚者 2013-04-10
  • 打赏
  • 举报
回复
不懂的问题,先google,基本都有。 如果实在没解决,在到这里问吧。。。
super_admi 2013-04-10
  • 打赏
  • 举报
回复
虽然是新手问题,但貌似楼主悟性有些欠缺啊,或者,是无法静心下来仔细读一读每一楼的答复?因为我觉得他们已经说得很清楚了。 我来总结一下: 验证控制台参数传入: 1)总的来说,控制台参数是用来在程序启动的时候,通过一些参数来控制程序的运行。如:ping 192.168.0.1(二楼). 2)调试控制台参数的时候,在VS下面一般由两种方法:1~集成环境内,在项目属性的调试选项中进行设置。见5楼;2~在系统的CMD控制台下直接敲命令。需要注意的是,WINDOWS下的路径如果含有空格,则系统可能会发生识别错误,所以需要用双引号引起来,见6楼。 如果这么多人的回答都无法让你满意,估计只有上帝才能让你满意。
u010179812 2013-04-10
  • 打赏
  • 举报
回复
我还是不明白,您们可以不可以把成功的模式截图或复制发到这里,我可能能够直观地明白。
赵4老师 2013-04-10
  • 打赏
  • 举报
回复
#include <stdio.h>
void main(int argc,char *argv[]) {
    int i;
    for (i=0;i<argc;i++) {
        printf("argv[%d]=[%s]\n",i,argv[i]);
    }
}
在cmd窗口中 exe文件名 1 2 3 exe文件名 "1 1" 2 3