因为面对对象作业(2018.5.21)的要求,去学习了C/C++中main函数参数的意义,以及一些简单的使用(从命令行指令的接受),不给予赘述。(仅为个人拙见,还望看官指正)
首先,带有参数的main
函数如下表示:
int main( int argc, char* argv[] )
{
do something;
return 0;
}
其中,argc
为从命令行中接受的指令个数,argv
为从命令行中接受的指令内容。通俗地理解,argc
就是在命令行中敲了几个字符串,argv
便是这几个字符串的值(argv[i]
,i = 0,1,2,3……)。于是乎,bonus的一些问题我得到了解决(参数不够,参数错误)。对于参数解释,个人认为已经足够,那么如何使用所接受到的参数便成为接下来要研究的问题。(笔者以freopen
为例,因为作业要求从命令行操作,而搜索出来的博客并没有我想要的内容,在我粗略浏览过后,决定自己动手)
首先观察一下freopen
语句freopen( "input/output.txt", "r"/"w", stdin/stdout )
,不难看出,freopen
的第一个参数是一个字符串,那么freopen
的参数便可以理解成:string, "r", stdin。而上文中我们提及的argv
,就是接受命令行的指令的字符串数组,那么freopen
语句便可以写作freopen( argv[i], "r"/"w", stdin/stdout )
, i = 0,1,2,3……,那么我们就可以方便的控制输入的文件名和输出的文件名。
其次,C++对于判断文件存在与否,我通过搜索学习到了ifstream fin(str)
(#include <fstream>
),之后加之判断:若(!fin)
为真,则名为str(str是一个字符串)的文件不存在,于是乎,bonus的一些问题又解决了(参数不规范)。而对于C而言,我记得可以通过File*
来判断是否存在所索取文件。
小结:当网上的一些东西有时候并不能解决我们的需求,并不代表我们不能学习,更不代表我们无能为力,通过对企图学习的东西先有一个大体认知,再观察我们需要改变的东西,结合我们的经验,其实很多的问题都可以得到解决,这就是我这次对于main函数带参的学习的一个小收获。