C语言命令行参数

源代码如下:
#include <stdio.h>
#include <stdlib.h>

int c;
char *filename = "C:\\Windows" ;

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

if ( argc = "/help" )
{
printf("此程序参数如下:\n");
printf("/c 提示是否确定。\n");
printf("/d 跳过警告,直接删除。\n");
printf("exit为退出。");
}

else if ( argc = "/d" )
{
remove( filename );
}

else if ( argc = "exit")
{
return 0;
}

else if ( argc = "/c" )
{
printf("是否运行该程序?(Y/N)\n");
gets(c);

if ( c == "y"|| c == "Y" )
{
remove( filename );
fprintf( stdout, "程序运行成功" );
system("pause");
return 0;
}
}
else if ( c == "n" || c == "N" )
{
fprintf(stdout,"程序没有进行任何操作。\n");
system("pause");
}
return 0;

}

原理为输入指定的参数,执行各种操作,究竟哪里错了?

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

{

.....

}

argc: 代表启动程序时,命令行参数的个数。C和C++语言规定,可执行程序程序本身的文件名,也算是一个命令行参数,因此,argc的值至少是1.

argv[]:指针数组,其中的每个元素都是一个char* 类型的指针,该指针指向一个字符串,这个字符串里就存放着命令行参数。

例如,argv[0]指向的字符串就是第一个命令行参数,即可执行程序的文件名,argv[1]指向第二个命令行参数,argv[2]指向第三个命令行参数....。

#include <stdio.h>

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

{

int i;

for ( i = 0;i < argc; i++)

{

printf("%s\n",argv[i]);

}

return 0;

}

windows下,将上面的程序编译成sample.exe,然后在控制台窗口敲:

sample para1 para2 s.txt 5 "hello world"

上面有6个参数,双引号为了包含空格作为一个参数。

输出结果:

sample

para1

para2

s.txt

5

hello world

扩展资料:

main函数通常含有参数argc和argv,写法通常如下:

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

int main(int argc,char **argv)

程序:

#include<stdio.h>

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

{

int i;

for(i=0;i<argc;i++)

printf("第 %d 个参数是 %s\n",i+1,argv[i]);

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-20
这个程序所用的文件名可以直接从命令行给出,例如生成了a.exe文件,那么:
a.exeb.txt
执行这个命令行,程序就会统计b.txt.文件中的字母数量。
学习编程就像学数学,最重要的就是自己独立思考,像这个程序,完全可以通过研读我前面写的内容自己看出其运行机制。千万不要做一个不会思考的人。
****************************************************
假如生成的可执行文件名为a.exe,那么:
a.exeabcdefht
其中的abc和def以及ht就是传到a.exe的命令行参数,它们都是字符串,要想在程序中使用这些参数,就必须把main函数的参数列表写成如下形式:
intmain(intargc,char*argv[])
这样,argc就是参数的个数(程序路径自身也是一个参数),所以对于上面的例子而言,argc=4,argv字符指针数组中就保存了指向各个参数字符串的指针(程序路径是第一个参数,由argv[0]指向),所以对于上面的例子而言,
argv[0]="a.exe"
argv[1]="abc"
argv[2]="def"
argv[3]="ht"
一个示例,说明如何使用这些参数:
//---------------------------------------------------------------------------
#include<stdio.h>
intmain(intargc,char*argv[])
{
inti;
for(i=0;i<argc;i++){
puts(argv[i]);
}
return0;
}
//---------------------------------------------------------------------------
如果这个程序生成的可执行文件名为a.exe,并以开头的命令行执行这个程序,那么会输出:
a.exe
abc
def
ht
另外,main()函数可以有第三个参数,也是一个字符指针数组,这个数组中保存了指向保存当前系统中的环境变量字符串的指针,例如以下程序可以输出系统中定义的环境变量:
//---------------------------------------------------------------------------
#include<stdio.h>
intmain(intargc,char*argv[],char*env[])
{
inti;
for(i=0;env[i];i++){
puts(env[i]);
}
return0;
}
//---------------------------------------------------------------------------
有关程序参数的详细说明,请参考一下国外的c语言教材和linux系统编程方面的教材
第2个回答  推荐于2017-11-25
命令行参数是保存在argv[]里的。argc只是说参数的个数。命令行参数一般是从argv[1]开始(包括argv[1])argv[0]是程序的名字。在输命令的时候,命令行参数之间用空格隔开。
比如:
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc<2)
{
printf("you must input args!");
return 0;
}
if(strcmp(argv[1],"help")==0)
{
printf("此程序参数如下:\n");
printf("-c 提示是否确定。\n");
printf("-d 跳过警告,直接删除。\n");
printf("exit为退出。");
return 0;
}
else if(strcmp(argv[1],"-c")==0)
{
//此处省略N行你的代码
}
return 0;
}
如果你编译出来的程序名字叫 test.exe 那么在命令行下输入 test.ext help后就会打印
此程序参数如下:
-c 提示是否确定。
-d 跳过警告,直接删除。
exit为退出。追问

哥们,我照你的这样写了,可是一旦执行除/help以外的参数便会停止工作。

追答

/help ???你还没整明白命令行参数是怎么回事吧
你没看到我写了一行 //此处省略N行你的代码
表示后面这些要你自己写。我已经吧框架给你写出来了,总不能让我写所有的把。自己动动手

本回答被提问者和网友采纳
第3个回答  2012-02-18
楼主,别天真了。
argc的意思是什么?
就是你输入了几个参数这里就是记录的几个
cmd下有个attrib 命令, attrib +s +h +a 这里参数就是3个至于参数是什么这是需要自己一个个的判断
if ( argc == "/help" )
if(*argv[1] =="/help")
还有个重点!!单个字母可以这么比较,字符串也能用这么来比较吗??
不是有个strcmp函数的么?
这参数是不能指定的!!
可变参数的!
假设你这代码生成的函数是louzhu.exe
那么你运行的时候是这么运行的,先把这个放到c:\...\system32下面
开始->运行 输入cmd,回车
louzhu /hellp
=============
看看下面的连接吧

参考资料:

第4个回答  2012-02-19
int c;
char *filename = "C:\\Windows" ;

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

if ( argc = "/help" )
{
printf("此程序参数如下:\n");
printf("/c 提示是否确定。\n");
printf("/d 跳过警告,直接删除。\n");
printf("exit为退出。");
}

else if ( argc = "/d" )
{
remove( filename );
}

else if ( argc = "exit")
{
return 0;
}

else if ( argc = "/c" )
{
printf("是否运行该程序?(Y/N)\n");
gets(c);

if ( c == "y"|| c == "Y" )
{
remove( filename );
fprintf( stdout, "程序运行成功" );
system("pause");
return 0;
}
}
else if ( c == "n" || c == "N" )
{
fprintf(stdout,"程序没有进行任何操作。\n");
system("pause");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网