【C】main (int argc,char *argv[]) 或main (int argc,char **argv)后台(CMD下)运行说明

版权声明:可以转载奥 https://blog.csdn.net/Jiajikang_jjk/article/details/84398172

main (int argc,char *argv[]) 或main (int argc,char **argv)后台(CMD下)运行说明

说明

       1、VC Code编辑代码
       2、搭配GCC
       3、CMD切换到.c文件路径下

一、main (int argc,char *argv[]) 或main (int argc,char **argv)区别

       一句话char *argv[] = char **argv

二 、详细介绍

       main函数的参数只能有两个, 习惯上这两个参数写为argc和argv

1、argc

       1、argc 记录了用户在运行程序的命令行中输入的参数的个数

2、argv

       1、argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数
       2、argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数
       3、char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数 argv[]参数,数组里每个元素代表一个参数
       4、argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数

3、案例

       1、案例一

例子:
        输入: a b c d
        结果: argc = 4
              argv[0]="a"   
              argv[1]="b"   
              argv[2]="c"   
              argv[3]="d"  

2、案例二

   int   argc   
     int   argc用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe   
   1: D:/tc2>test   
    这个时候,argc的值是1   
    
   2:  D:/tc2>test.exe   myarg1   myarg2  的话,argc的值是3。也就是命令名加上两个参数,一共三个参数   
        char   *argv[]   
          char   *argv[]   用来取得你所输入的参数   
   3: D:/tc2>test   
      这个时候,argc的值是1,argv[0]的值是   "test"   
   4: D:/tc2>test   myarg1   myarg2   
      这个时候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。   
      这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。  
      如:copy   a.c   b.txt   
      这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。   
      当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求

4、案例三

1、代码

#include <stdio.h>
#include <stdlib.h> // 提供exit();

int main(int argc, char *argv[])
{
    //printf("%d\n",argc);//参数个数
    //printf("%s\n",argv[0]);//第一个参数,程序名
    //printf("%s\n",argv[1]);//第二个参数,待处理的txt文档
    char *filename = argv[1]; // 待读取的文本文档
    FILE *fp;                 // 文件指针
    int ch;                   // 读取文件,存储每个字符的地方

    //fp = fopen("./wenben/wenben.txt", "r+")
    if ((fp = fopen(filename, "r+")) == NULL)             // 以更新模式打开文件(以读写文件打开)
    {                                                     // 允许以读取方式打开一个已有的文本文件
        fprintf(stdout, "无法打开文件\"wenben.txt\".\n"); //stdout标准输出
        exit(EXIT_FAILURE);                               //表示没有成功地执行一个程序--退出
    }

    // 成功打开文件
    while ((ch = getc(fp)) != EOF)// getc()和getchar()的区别是告诉getc()要使用哪一个文件
    {                     // ECF默认为-1
        putc(ch, stdout); // putchar(ch);相同-- 指定ch文件
    }

    return 0;
}

2、运行结果
在这里插入图片描述

扫描二维码关注公众号,回复: 4246653 查看本文章

三、参考说明

1、https://blog.csdn.net/lambol_8309/article/details/4524964

猜你喜欢

转载自blog.csdn.net/Jiajikang_jjk/article/details/84398172
今日推荐