当我尝试使用 char 数组或指针时,c++ fopen() 返回 NULL 指针

c++ fopen() returning a NULL pointer when I try using a char array or pointer

我正在尝试使用 fopen 打开文件并将其存储到 FILE* 中。

我的代码如下:


    char path[300];
printf("File name: ");
fgets(path, 300, stdin); FILE* fp;
fp = fopen(path, "r");
if (fp == NULL) {
printf("file does not exist\n");
}

当我运行上面的代码时,我得到一个找不到文件的错误;但是,当我对文件名进行硬编码时:


    fp = fopen("test.txt", "r");

代码按预期工作。 我认为这个问题可能与数据类型有关,因为 fopen 需要一个 const char* 作为参数。我试过使用 char* 但无济于事。

不,它比那简单得多。当您使用 fgets 时,行尾的换行符将包含在 char 数组中。该换行符会打乱您打开文件的尝试。

顺便说一句 fopen 不需要 const char* 参数。它需要一个可以转换const char* 的参数。这包括 char* 以及 char []