C语言和c++中的main命令行参数(命令行变元)是需要手动的输入的;
比如int main(int argc,char *argv[])中的argc表示命令行参数(命令行变元)的个数,而char *argv[]则存储命令行参数字符串,每个参数之间用空格隔开
一般情况下命令行参数(命令行变元)的第一个字符串即 argv[0] 是默认的这个程序的路径加上函数名;
比如你的程序在C盘个目录下的test.c 那么argv[0] = "C:\test.c";
而你手动输入的命令行参数则是 从argv[1]开始的,并且argc是根据你输入的字符串来统计数目的,一般不会赋值,比如你的程序中将 argc = 3;这是多余的,而且影响程序执行;
我针对你的程序在三个工具 turboc2.0 vc++6.0 和vs2008上分别执行过,都是没问题的;不过你的程序中要把 argc = 3 注释掉,这里没必要赋值,赋值反而出错的;
你的程序我少做了一下修改和注释;
#include <stdio.h>//如果用的是库函数的头文件,用<>最好,因为他首先查找库函数,执行会快
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int _tmain(int argc, char* argv[])//这个函数完全没有什么用
{
return 0;
}
void main(int argc,char *argv[])
{
int disp,count;
//argc = 3;//此处将argc 注释掉了,他没有用
if(argc < 2)
{
printf("You must enter the length of the count\n");
printf("on the command line.try again\n");
exit(1);/*非正常跳出程序*/
}
if(argc == 3 && !strcmp(argv[2],"display") )
disp=1;
else disp=0;
for( count=atoi(argv[1]); count; --count)
if(disp)printf("%d\n",count);
putchar('\a'); /*将产生蜂鸣*/
printf("Down");
return;
}
上面基本上是你的源程序,
在VS里面输入命令行参数的办法是
在文件栏 项目 ---> xxx程序 属性 -----> 配置属性 ---->调试 ----->命令行参数(在本地windows调试器上啊)输入你要输入的参数即可
在vc++6.0 程序中
工具栏 工程---->设置----->调试 ---->程序变量 即可输入
在turboc2.0中 是在
options ----> arguments 在这里输入即可
其实你的程序的意思是
1.让你输入命令行参数,如果没有输入,就是argc = 1 就执行
printf("You must enter the length of the count\n");
printf("on the command line.try again\n");
exit(1);/*非正常跳出程序*/
这里如果你把exit(1)注释掉 就会看到输出的结果,就是没有输入;不注释就会立即结束
2.如果你输入的是123 display的话就正常执行了
3.如果你不这样输入的话,就会出现其他现象, |