小白教程
所有教程
关于
Search
172.70.126.139
172.70.126.139
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“C 命令行参数”的源代码
本页内容
上一节:
C_内存管理
下一节:
C_排序算法
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:C 命令行参数}}[[Category:C 语言教程|33]] = C 命令行参数 = 执行程序时,可以从命令行传值给 C 程序。这些值被称为'''命令行参数''',它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 命令行参数是使用 main() 函数参数来处理的,其中,'''argc''' 是指传入参数的个数,'''argv[]''' 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作: <pre> #include <stdio.h> int main( int argc, char *argv[] ) { if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); } } </pre> 使用一个参数,编译并执行上面的代码,它会产生下列结果: <pre> $./a.out testing The argument supplied is testing </pre> 使用两个参数,编译并执行上面的代码,它会产生下列结果: <pre> $./a.out testing1 testing2 Too many arguments supplied. </pre> 不传任何参数,编译并执行上面的代码,它会产生下列结果: <pre> $./a.out One argument expected </pre> 应当指出的是,'''argv[0]''' 存储程序的名称,'''argv[1]''' 是一个指向第一个命令行参数的指针,*argv[n] 是最后一个参数。如果没有提供任何参数,argc 将为 1,否则,如果传递了一个参数,'''argc''' 将被设置为 2。 多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 "" 或单引号 '' 内部。让我们重新编写上面的实例,有一个空间,那么你可以通过这样的观点,把它们放在双引号或单引号""""。让我们重新编写上面的实例,向程序传递一个放置在双引号内部的命令行参数: <pre> #include <stdio.h> int main( int argc, char *argv[] ) { printf("Program name %s\n", argv[0]); if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); } } </pre> 使用一个用空格分隔的简单参数,参数括在双引号中,编译并执行上面的代码,它会产生下列结果: <pre> $./a.out "testing1 testing2" Progranm name ./a.out The argument supplied is testing1 testing2 </pre>
返回至“
C 命令行参数
”。
上一节:
C_内存管理
下一节:
C_排序算法