[C语言] 命令行参数

不带命令行参数

C语言源程序经编译和连接处理,生成可执行程序后,才能运行。例如,test.c是一个简单的C语言源程序:

#include<stdio.h>
int main(void)
{
    printf("Hello world\n");	
    return 0;
}

经过编译和连接后,生成可执行程序test.exe,它可以直接在Windows环境下以命令方式运行。比如,将其放到桌面,在DOS中,输入test即可运行:
在这里插入图片描述

带命令行参数

输入命令时,在可执行文件(命令)名后面可以跟一些参数(命令行参数),一般形式为:

命令名 参数1 参数2 … 参数n

命令名和参数之间用空格分隔,也可以没有参数。

在C语言中,主函数main()可以有两个参数,用于接收命令行参数。带参数的main()习惯写法为:

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

第一个参数argc(argument count)用于接收命令行参数(包含命令)的个数;第二个参数argv(argument vector)接收以字符串常量形式存放的命令行参数(包括命令本身也作为一个参数)。字符指针数组argv[]表示各个命令行参数(包含命令),其中argv[0]指向命令,argv[1]指向第一个命令行参数,argv[2]指向第二个命令行参数,…,argv[argc-1]指向最后一个命令行参数.

应用

编写程序echo,输出所有命令行参数在同一行上。

#include<stdio.h>
int main(int argc, char* argv[])
{
	int k;
	for(k = 1; k < argc; k++)
		printf("%s ", argv[k]);
	printf("\n");
	
	return 0;
 } 

输入:echo Hello world
输出:Hello world
在这里插入图片描述
由于argv是函数main()的形参,尽管定义时一般写成数组形式,但实际上还是指针,在程序中可以直接改变它的值。上面echo.c中的循环也可以写成:

	for(k=1,argv++;k<argc;k++)
	    printf("%s ",*(argv++));

注意有坑:Windows自带echo,建议保存C程序源文件时对文件名进行修改,不使用echo,或者在命令行使用echo.exe hello world避免直接调用系统的echo。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值