当前位置: 首页 > article >正文

命令行参数(C语言)

目录

什么是命令行参数

main函数的可执行参数

不传参打印

传参打印

IDE传参

cmd传参

命令行参数的应用(文件拷贝)


什么是命令行参数

概念:命令行参数指的是在运行可执行文件时提供给程序的额外输入信息。它们通常以字符串形式出现,并且紧跟着可执行文件名之后

//可执行文件program.exe、命令行参数arg1、arg2
program.exe arg1 arg2

main函数的参数

标准定义下,main 函数有两种常见形式:

//形式一:不接受任何输入参数
int main(void);

//形式二:接受两个输入参数:argc与argv
int main(int argc, char *argv[]);

参数含义:

  • argc(argument count):传递给程序的命令行参数个数
  • argv(argument value):指针数组,数组中的每一个指针都指向一个字符串

argc是整型,argv是指针数组

不传参打印

#include <stdio.h>

int main(int argc, char* argv[])
{
	printf("argc = %d\n", argc);
	for (int i = 0; i < argc; ++i)
	{
		printf("argv[%d] =%s\n", i,argv[i]);
	}
	return 0;
}

如果不传入命令行参数时,argc默认为1,即argv[0]默认为当前可执行文件的路径

传参打印

编译器传参

传参步骤:调试->属性->配置属性->调试->命令参数

注意事项:不同参数之间采用空格分隔

传参效果演示:

#include <stdio.h>

int main(int argc, char* argv[])
{
	printf("argc = %d\n", argc);
	for (int i = 0; i < argc; ++i)
	{
		printf("argv[%d] =%s\n", i,argv[i]);
	}
	return 0;
}

       此时表示传入了五个参数,除了argv[0]默认为前可执行文件的路径外,还有我们人为传入的“abc”、“def”、“132”、“152”四个参数

命令提示符传参

传参步骤:win + R->cmd->可执行文件的目录下->可执行文件 传参1 传参2 ......

注意事项:

1、可执行文件一般来说都是以.exe结尾的,.c不是可执行文件,如果不确定可执行1文件的目录,可以在不传参时查看agrv[0]的值,即当前可执行文件的路径。

2、进行文件的拷贝时,输入文件要位于当前可执行文件的同一目录下

传参效果演示:

命令行参数的应用(文件拷贝)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(int argc, char* argv[])
{
    //使用命令行参数打开输入文件
    FILE* fpIn = fopen(argv[1], "r");
    if (fpIn == NULL)
    {
        printf("open %s file error.\n", argv[1]);
        fclose(fpIn);
        return -1;
    }

    //使用命令行参数打开输出文件
    FILE* fpOut = fopen(argv[2], "w");
    if (fpIn == NULL)
    {
        printf("open %s file error.\n", argv[2]);
        fclose(fpOut);
        fclose(fpIn);
        return -1;
    }

    //从输入文件中读取字符,并写入到输出文件中,直到遇到文件结束
    char ch = fgetc(fpIn);

    while (ch != EOF)
    {
        fputc(ch, fpOut);
        ch = fgetc(fpIn);
    }

    //关闭输入输出文件
    fclose(fpIn);
    fclose(fpOut);
    return 0;
}

~over~ 


http://www.kler.cn/news/163519.html

相关文章:

  • 数组区段的最大最小值
  • 采用Python 将PDF文件按照页码进行切分并保存
  • 什么是web组态?一文读懂web组态
  • 如何前端存token,后端获取token
  • Redisson出现问题总结
  • C++使用模板的注意事项
  • 2024年SEO策略:如何优化您的知识库?
  • 10 大 Mac 数据恢复软件深度评测
  • Linux常用命令详解与示例
  • 【原创】Mac mini M1安装home-brew
  • C语言搭建项目-学生管理系统(非链表)
  • Unity 2022 + Android 接入微信登录
  • HttpComponents: 领域对象的设计
  • 【C#】序列化和反序列化,以及System.Text.Json和Newtonsoft.Json比较
  • EM32DX-C4【C#】站15
  • .NET Core 依赖注入 Microsoft.Extensions.DependencyInjection
  • 修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块
  • 视频汇聚/音视频流媒体视频平台/视频监控EasyCVR分享页面无法播放,该如何解决?
  • 算法基础八
  • 分类信息发布小程序效果如何
  • C# --线程的进化史
  • TQ2440开发板-按键驱动程序设计
  • mmdetection测试保存到新的文件夹,无需标签
  • uni-app 设置tabBar的setTabBarBadge购物车/消息等角标
  • vue-element使用html2canvas实现网页指定区域(指定dom元素)截图
  • 机器人说明书---名词解释016课_C++语言_面向对象(6)
  • Endnote使用教程
  • 【数据结构】——队列实现二叉树的功能
  • Linux信息收集
  • JS原生实现浏览器滚动条滚动侧边栏高亮响应