版权声明:可以转载奥 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 查看本文章