我想从输入文件中读取,我的代码如下:
int main(int argc, char* argv[])
{
/* 1st arg: input file name , 2nd arg: output file name */
cout<<argc<<endl;
ifstream input_file;
input_file.open(argc);
return 0;
}
Q1 . 当我打印argc时,argc = 3?魔法3来自哪里?
Q2 . 由于argc的类型是int,我应该将argc读取为const char *,然后输入input_file.open()吧?
Q3 . argv是我的输出名称,但为什么argv []的类型是char * . 我希望argv的类型是字符串,因为输出文件的名称是字符串
我是C的新手
提前致谢 :)
1 回答
在命令行中使用
argc
和argv
将输入传递给程序 .argc
存储传递的输入数量,argv
存储输入值 .argv
被声明为char*[]
,也就是说指向char的指针数组 . 这意味着您传递的每个输入,独立于其性质(数字,字符或其他)将被视为char*
,并将成为该向量的元素 .从命令行,您可以执行您的程序输入:
现在,
input1
和input2
将作为参数传递给您的main函数 .argv
将等于您输入1的输入数字,因为程序名称实际上被视为程序的输入 . 在这种情况下,您传递2个输入,因此argv
= 3 .不,您应该以这种方式阅读您的输入:
您应该清楚所有输入都存储在
argv[]
中,并且您可以通过数组轻松访问每个输入:Note:
argc
通常用于if条件,以避免访问非法内存区域 . 考虑以下程序:如果您执行程序:
./myProgram input1 input2
你可能会得到一个分段错误错误,因为你试图访问不存在的
argv[3]
,因为数组argv
只有3个元素 .您可以使用
argc
防止此崩溃: