使用 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] 中可能不包含任何内容。