命令行参数(C语言)

简介: 命令行参数(C语言)



什么是命令行参数

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

//可执行文件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~

相关文章
|
存储 C语言
32 C语言 - 命令行参数
32 C语言 - 命令行参数
63 0
|
7月前
|
存储 Unix 编译器
C语言命令行参数
C语言命令行参数
35 0
|
C语言 Python
一个高效的C语言命令行解析库
一个高效的C语言命令行解析库
656 0
|
存储 Linux C语言
C语言编程—命令行参数
执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。 命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。
125 0
|
存储 并行计算 Java
【C语言】关于我回头学的那些命令行参数等(七)
我的第一门语言就是C,但是学艺不精,中途跑去学了C#和Java后,感觉到了C的重要性,毕竟是最接近底层的语言,又跑回来学C。 毕竟前两门的控制语句,变量什么的都是类似的,回到C后只需要学习一些特定C的语法,比如宏,预编译指令等等,这些对我来说都是陌生的词汇。 所以边学边记录一下以前的知识。
103 0
|
存储 缓存 算法
【C语言拓展】缓冲区、结构体大小计算、命令行参数
【C语言拓展】缓冲区、结构体大小计算、命令行参数
161 0
|
存储 C语言
一个C语言命令行解析器
一个C语言命令行解析器
154 0
一个C语言命令行解析器
|
C语言
【C 语言】数组 ( 指针数组用法 | 命令行参数处理 )
【C 语言】数组 ( 指针数组用法 | 命令行参数处理 )
270 0
【C 语言】数组 ( 指针数组用法 | 命令行参数处理 )
|
C语言
【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
130 0
【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
|
C语言
【C 语言】文件操作 ( 写文本文件 | Qt 创建 C 语言命令行项目 )(二)
【C 语言】文件操作 ( 写文本文件 | Qt 创建 C 语言命令行项目 )(二)
158 0
【C 语言】文件操作 ( 写文本文件 | Qt 创建 C 语言命令行项目 )(二)