前言

在旧版本的IDE中新建一个C/C++源文件,你可能会看到这种样子的main函数

int main(int argc,char* argv[])
{
	return 0;
}

上面这个argc,argv到底有什么用呢?

分析

初探类型

先看argv,可以理解成它是一个string数组(char数组可以理解成一个string,为了方便叙述都用string来表示),而argc是一个int类型

int argc,char* argv[]

这两者的关系是:**argc表示argv中存放string的个数,**默认的argc=1,因为argv[0]就是你当前程序的路径。
执行下面代码:

#include<iostream>
using namespace std;
int main(int argc,char* argv[])
{
	cout<<"argc: "<<argc<<endl;
	cout<<"argv: "<<argv[0]<<endl;
	return 0;
} 

看到结果:

在这里插入图片描述

文件IO

看到这里你肯定明白了,argc是argv中存放string的数量,有了这个我们就可以遍历这个数组了
现在我们有了文件路径,可以干什么?没错 IO

首先我们在该文件目录下,新建一个文本文件叫123.txt,里面输入 abcdefg

运行如下代码,你会看到…什么也没有发生…因为我们没有读取文件。

#include<iostream>
#include<fstream> 
using namespace std;
int main(int argc,char* argv[])
{
	ifstream Open;
	//这是个示例。在工程中IO务必检查文件是否存在
	Open.open(argv[1]);
	cout<<"argc: "<<argc<<endl;
	const int len=100;
	char str[len];
	while(Open.getline(str,len))
	{
		cout<<str<<endl;
	}
	return 0;
} 

读取文件

怎么读取文件?

win下

打开win+R,输入cmd,打开我们熟悉的黑框框,首先切换目录,然后运行test 123.txt
成功了!可以看到argc为2,说明argv里面有两个string

原图中是在目录下创建MyTXT.txt,内容为This is a test.

linux下

在目录下,打开终端,输入./test 123.txt
在这里插入图片描述
可以看到读取出该txt文件内容。
使用readdir()可以读取文件目录

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main(int argc, char **argv)
 
{
	DIR *pDir = NULL;
	struct dirent * pEnt = NULL;
	unsigned int cnt = 0;	
	if (argc != 2)
	{
		printf("usage: %s dirname\n", argv[0]);
		return -1;
	}
	pDir = opendir(argv[1]);
	if (NULL == pDir)
	{
		perror("opendir");
		return -1;
 
	}	
	while (1)
	{
		pEnt = readdir(pDir);
		if(pEnt != NULL)
		{
			if (pEnt->d_type == DT_REG)
			{
				printf("是普通文件:");
			}
			else
			{
				printf("不是普通文件:");
			}
			printf("name:[%s]	\n", pEnt->d_name);
			cnt++;
		}
		else
		{
			break;
		}
	};
	printf("总文件数为:%d\n", cnt);
	return 0;
}

读取该层级文档目录时,需要使用./test .
读取上一层级文档目录时,需要使用./test ..

在该目录下包含
1.-test
2.-123.txt
3.-aaa
3.1->321.txt
结果如下:
在这里插入图片描述

版权声明:本文为CSDN博主「hhmy77」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hhmy77/article/details/91053139

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐