-
2021-05-20 04:15:51
这是可能在命令行中的一些值传递给C程序执行。特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要。
命令行参数使用main()函数的参数,其中argc是指传递参数的数量,argv[]是一个指针数组指向传递给程序的每个参数。下面是一个简单的例子,检查命令行是否提供的任何参数,并相应地采取动作:
#includeintmain(intargc,char*argv[]){if(argc==2){printf("The argument supplied is %s
",argv[1]);}elseif(argc>2){printf("Too many arguments supplied.
");}else{printf("One argument expected.
");}}
当上面的代码被编译,并与一个参数执行,它会产生以下结果。
$./a.out testing
The argument supplied is testing
当上述代码被编译并用两个参数执行时,它产生了以下结果。
$./a.out testing1 testing2
Too many arguments supplied.
当上面的代码被编译并没有传递任何参数执行,它会产生以下结果。
$./a.out
One argument expected
应当指出的是argv[0]保存程序本身,argv[1]名称是指向提供的第一命令行参数,以及* argv[n]是最后一个参数。如果没有提供参数,argc只有一个参数,如果传递一个参数,那么argc设置为2。
通过所有用空格隔开的命令行参数,但如果参数本身具有的空间,那么可以通过这样的参数把内部用双引号“”或单引号''分开。让我们重新写上面的例子再一次,将打印程序的名称,也将在双引号内传递一个命令行参数:
#includeintmain(intargc,char*argv[]){printf("Program name %s
",argv[0]);if(argc==2){printf("The argument supplied is %s
",argv[1]);}elseif(argc>2){printf("Too many arguments supplied.
");}else{printf("One argument expected.
");}}
当上面的代码被编译以及带一些空格,但里面的双引号分隔一个参数执行,它会产生以下结果。
$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2
¥ 我要打赏
纠错/补充
收藏
上一篇:
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
更多相关内容 -
c语言命令行参数怎么用?c语言命令行参数有什么作用?
2021-05-18 13:01:06c语言命令行参数怎么用?c语言命令行参数有什么作用?之前曾经使用过很多次c语言的命令行参数了,但是总是每次使用的时候都不太确定,需要重新查资料,这次来个总结。c语言的命令行参数非常简单,只需要一个简单的例子...c语言命令行参数怎么用?c语言命令行参数有什么作用?之前曾经使用过很多次c语言的命令行参数了,但是总是每次使用的时候都不太确定,需要重新查资料,这次来个总结。c语言的命令行参数非常简单,只需要一个简单的例子就可以说明:
#include
void main(int argc,char** argv)
{
printf("%d\n",argc);
printf("%s\n",argv[0]);
printf("%s\n",argv[1]);
printf("%s\n",argv[2]);
}
在上面的例子中,我们给main函数传递两个参数,argc和argv。argc是int类型的,它表示的是命令行参数的个数。不许要用户传递,它会根据用户从命令行输入的参数个数,自动确定。argv是char**类型的,它的作用是存储用户从命令行传递进来的参数。它的第一个成员是用户运行的程序名字。
对于上面的例子,我们将其保存为test.c,用gcc编译生成目标文件为test,测试如下:
(1)我们值在命令行下直接运行程序,没有传递其它任何参数:
./test
运行结果如下:
第一个输出的是argc,因为我们只输入了./test,所以argc为1,即只有一个命令行参数。后面输出的第一个命令行参数也是./test。接着程序就出错了,因为后面已经没有第二个和第三个参数了,在写实际的应用时,应注意对这一部分进行容错处理。
(2)我们在命令行下输入:
./test hello world
可以看到argc为3,第一个参数为./test,第二个参数为hello,第三个参数为world。
(3)我们继续输入:
./test hello world hello world
可以看到这时,argc变为5,argv指数出了前面三个参数,当然还可以把后面的两个参数也进行输出。
如果命令行中传递的一个参数包括空格,就需要用用“ ”将参数扩起来例如:
./test "hello world" "hello world"
我们将hello world整体当作一个参数传递,就需要使用“hello world”。
需要注意的是argv的类型可以是char ** argv,char argv[ ][ ],char* argv[ ]。
-
c语言命令行参数
2021-05-19 02:19:56匿名用户1级2010-05-27 回答这个程序所用的文件名可以直接从命令行给出,例如生成了a.exe文件,那么:a.exe b.txt执行这个命令行,程序就会统计b.txt.文件中的字母数量。学习编程就像学数学,最重要的就是自己独立...匿名用户
1级
2010-05-27 回答
这个程序所用的文件名可以直接从命令行给出,例如生成了a.exe文件,那么:
a.exe b.txt
执行这个命令行,程序就会统计b.txt.文件中的字母数量。
学习编程就像学数学,最重要的就是自己独立思考,像这个程序,完全可以通过研读我前面写的内容自己看出其运行机制。千万不要做一个不会思考的人。
****************************************************
假如生成的可执行文件名为a.exe,那么:
a.exe abc def ht
其中的abc和def以及ht就是传到a.exe的命令行参数,它们都是字符串,要想在程序中使用这些参数,就必须把main函数的参数列表写成如下形式:
int main(int argc, char* argv[])
这样,argc就是参数的个数(程序路径自身也是一个参数),所以对于上面的例子而言,argc=4,argv字符指针数组中就保存了指向各个参数字符串的指针(程序路径是第一个参数,由argv[0]指向),所以对于上面的例子而言,
argv[0]="a.exe"
argv[1]="abc"
argv[2]="def"
argv[3]="ht"
一个示例,说明如何使用这些参数:
//---------------------------------------------------------------------------
#include
int main(int argc, char* argv[])
{
int i;
for (i = 0; i
puts(argv[i]);
}
return 0;
}
//---------------------------------------------------------------------------
如果这个程序生成的可执行文件名为a.exe,并以开头的命令行执行这个程序,那么会输出:
a.exe
abc
def
ht
另外,main()函数可以有第三个参数,也是一个字符指针数组,这个数组中保存了指向保存当前系统中的环境变量字符串的指针,例如以下程序可以输出系统中定义的环境变量:
//---------------------------------------------------------------------------
#include
int main(int argc, char* argv[],char *env[])
{
int i;
for (i = 0; env[i]; i++) {
puts(env[i]);
}
return 0;
}
//---------------------------------------------------------------------------
有关程序参数的详细说明,请参考一下国外的C语言教材和LINUX系统编程方面的教材
-
C语言命令行参数的使用
2021-01-14 17:54:58之前曾经使用过很多次c语言的命令行参数了,但是总是每次使用的时候都不太确定,需要重新查资料,这次来个总结。c语言的命令行参数非常简单,只需要一个简单的例子就可以说明 新建test.c //文件名称是 test.c #...之前曾经使用过很多次c语言的命令行参数了,但是总是每次使用的时候都不太确定,需要重新查资料,这次来个总结。c语言的命令行参数非常简单,只需要一个简单的例子就可以说明
新建test.c
//文件名称是 test.c #include <stdio.h> void main(int argc,char** argv) { printf("%d\n",argc); printf("%s\n",argv[0]); printf("%s\n",argv[1]); printf("%s\n",argv[2]); }
在上面的例子中,我们给main函数传递两个参数,argc和argv。argc是int类型的,它表示的是命令行参数的个数。不许要用户传递,它会根据用户从命令行输入的参数个数,自动确定。argv是char**类型的,它的作用是存储用户从命令行传递进来的参数。它的第一个成员是用户运行的程序名字。
对于上面的例子,我们将其保存为test.c,用gcc编译生成目标文件为test,测试如下:
(1)我们值在命令行下直接运行程序,没有传递其它任何参数:
gcc test.c -o test
./test
第一个输出的是argc,因为我们只输入了./test,所以argc为1,即只有一个命令行参数。后面输出的第一个命令行参数也是./test。接着程序就出错了,因为后面已经没有第二个和第三个参数了,在写实际的应用时,应注意对这一部分进行容错处理。
1 ./test 段错误 (核心已转储)
(2)我们在命令行下输入:
./test hello world
3 ./test hello world
(3)我们继续输入:
./test hello world hello world
可以看到这时,argc变为5,argv指数出了前面三个参数,当然还可以把后面的两个参数也进行输出。
5 ./test hello world
如果命令行中传递的一个参数包括空格,就需要用用“ ”将参数扩起来例如:
./test "hello world" "hello world"
3 ./test hello world hello world
我们将hello world整体当作一个参数传递,就需要使用“hello world”。
需要注意的是argv的类型可以是char ** argv,char* argv[ ]。
-
C语言命令行参数、文件操作及调试代码那些子事儿
2020-11-12 14:46:29命令行参数 在之前的学习中,main函数—般都是没有参数的,对应的,在运行时,—般就是直接输入可执行的程序文件名(例如. / main ) 但是,实际上main函数是可以有参数的。可以将任何过去无参数的main函数替换成下面... -
windows下的C语言命令行参数
2020-05-16 15:30:49C语言命令行参数的使用 测试代码 #include <stdio.h> void main(int argc,char** argv) { printf("%d\n",argc); printf("%s\n",argv[0]); printf("%s\n",argv[1]); printf("%s\n",argv[2]); } 参数说明 ... -
C语言命令行参数如何解析?你经常用的终端怎么运行的你说不清楚!
2021-02-07 12:44:26C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!是的,你没有看错,从今天开始,公众号会持续原创一系列C语言的内容,同时穿插操作系统,组成原理,汇编,以及一些类... -
C语言命令行参数详解
2018-02-10 12:38:44C语言的main函数通常含有参数argc和argv,写法通常如下: int main(int argc,char *argv[]) ... argv : *argv[]是一个指针数组,里面存放的指针指向所有的命令行参数,argv[0]指向程序的全局路径,a... -
C语言程序设计技巧之命令行参数
2020-07-26 09:31:34文章主要介绍C语言程序设计中关于命令行参数的一些技巧。 -
C语言命令行参数汇总
2021-05-20 15:10:47从命令行传递的参数称为命令行参数。这些参数由main()函数来处理的。要支持命令行参数,您需要更改main()函数的结构,如下所示 -int main(int argc, char *argv[] )C在这里,argc计算参数的数量。它将文件名称作为第... -
C语言——命令行参数
2022-03-22 16:51:37命令行参数 在图形界面普及之前都使用命令行界面。DOS和UNIX就是例子。Linux终端提供类UNIX命令行环境。命令行是在命令行环境中,用户为运行程序输入命令的行。假设一个文件中有一个名为fuss的程序。在UNIX环境中... -
C语言命令行参数(main 函数形参)及在控制台窗口的调用
2017-11-07 22:32:00C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针... -
C语言中命令行参数处理
2021-12-23 14:23:46C语言中命令行参数处理-getopt_long函数 -
c语言命令行参数如何运行?
2021-05-22 17:59:482011-06-18 回答这个程序所用的文件名可以直接从命令行给出,例如生成了a.exe文件,那么:a.exeb.txt执行这个命令行,程序就会统计b.txt.文件中的字母数量。学习编程就像学数学,最重要的就是自己独立思考,像这个... -
c语言+命令行参数_C / C ++中的命令行参数
2020-07-20 12:24:52c语言+命令行参数In this article, we’ll be looking at how we can use command line arguments in C / C++. 在本文中,我们将研究如何在C / C ++中使用命令行参数。 Command Line arguments are very useful if ... -
c语言命令行参数怎么输入_【Linux笔记】Linux下编译C语言程序
2020-11-20 09:38:10在上一篇笔记中有分享Linux下的vi/vim编辑器的使用方法(【Linux...关于在Windows命令行下编译C程序的方法可查看往期笔记:【C语言笔记】windows命令行下编译C程序、【C语言笔记】使用MinGW来编译C程序。首先,使用... -
c语言中命令行参数详解
2010-03-09 20:37:09c语言中命令行参数详解 c语言中命令行参数 -
C语言解析命令行参数
2021-05-20 02:28:51} getopt函数的第三个参数表示可以接收的option字符串,如上例可以接收-a/-b/-c/-d四个option,其中b和d后面跟冒号,代表可以有option argument,测试如下: ./a.out -a -b "Hello" -c -d '123' 打印结果如下: ... -
C语言命令行传递参数
2018-10-29 12:33:061、C语言main函数参数的意义 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { for(int i=0;i<argc;i++) { printf("%s\n",argv[i]); ...