当我尝试使用 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 []
。
我正在尝试使用 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 []
。