使用 argc 和 argv 读取文件
Reading a file using argc and argv
我正在尝试(如标题所示)使用 argc 和 argv 从文件读取到 main,从命令行获取文件名并将其通过 main 传递到一个打开、读取和写入的 void 函数它。但是我得到 Cannot open file...
Segmentation fault
。
void file_pass (char * argv[])
{
FILE *file_name;
if ((file_name = fopen(argv[1], "r")) == NULL)
{
printf("Cannot open file ...\n");
}
fclose(file_name);
}
这让我认为它没有正确打开文件,但我不确定为什么。
在你的函数中 void file_pass (char * argv[])
-
if ((file_name = fopen(argv[1], "r")) == NULL)
而不是这个,你应该试试这个 -
if ((file_name = fopen(argv[0], "r")) == NULL) // file's name is in argv[0] in funciton
因为数组索引以 0
开头并且在函数 argv[1]
中可能不包含任何内容。
我正在尝试(如标题所示)使用 argc 和 argv 从文件读取到 main,从命令行获取文件名并将其通过 main 传递到一个打开、读取和写入的 void 函数它。但是我得到 Cannot open file...
Segmentation fault
。
void file_pass (char * argv[])
{
FILE *file_name;
if ((file_name = fopen(argv[1], "r")) == NULL)
{
printf("Cannot open file ...\n");
}
fclose(file_name);
}
这让我认为它没有正确打开文件,但我不确定为什么。
在你的函数中 void file_pass (char * argv[])
-
if ((file_name = fopen(argv[1], "r")) == NULL)
而不是这个,你应该试试这个 -
if ((file_name = fopen(argv[0], "r")) == NULL) // file's name is in argv[0] in funciton
因为数组索引以 0
开头并且在函数 argv[1]
中可能不包含任何内容。