我正在做一个程序,有些东西我不能理解。我有一个带有参数的main函数:
int main(int argc, const char *argv[]){
FILE *file;
file=fopen(argv[1], "r");
if( file == NULL )
{
perror("Error while opening the file.n");
exit(EXIT_FAILURE);
}
如何读取argv[1]
文件?当我编译它时,错误显示为无效参数。我如何打开文件,以便打印它隐藏的内容?我正在使用代码块。
argv[1]指的是用户在命令行传递的第一个参数。Argv[0]是指文件本身。因此,在您的示例中,程序将打开作为第一个参数传递的文件。
./myprogram myfilename.txt
此外,程序本身也有一些问题。
#include <stdio.h> /* Library needed for input/output*/
#include <stdlib.h> /* needed for the exit calls*/
int main(int argc, const char *argv[]){
FILE *file;
file=fopen(argv[1], "r");
if( file == NULL )
{
perror("Error while opening the file.n");
exit(1);
}
return 0;
}
这显然没有做太多,但它会打开argv1。另外,我将exit(EXIT_FAILURE)更改为exit(1)。它们大多是同义词,但exit(1)不需要编译器标志(-std=c99)。EXIT_FAILURE被认为更具可移植性——EXIT_FAILURE vs exit(1)?-但为了简单起见,我将其更改为exit(1)。