【问题标题】:c++ fopen() returning a NULL pointer when I try using a char array or pointer当我尝试使用 char 数组或指针时,c++ fopen() 返回一个 NULL 指针
【发布时间】:2020-11-20 18:00:58
【问题描述】:

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

我的代码如下:

字符路径[300];
printf("文件名:");
fgets(路径,300,标准输入); 文件* fp;
fp = fopen(路径, "r");
如果(fp == NULL){
printf("文件不存在\n");
}

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

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

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

【问题讨论】:

    标签: c file fopen


    【解决方案1】:

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

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

    【讨论】:

    • std::getline 将为您丢弃结尾的行。它使用std::string,如果用户输入的路径包含 300 个或更多字符,它会自行调整大小。
    • @user4581301,当初学者清楚地用c编程时,无需将其与c++混淆
    • @HAL 我不关注 C 标签,所以如果我在这里,问题被标记为 C++。没有指出解决问题的最简单方法可能是使用 C++ 特性,这有点疏忽。
    猜你喜欢
    • 2016-06-10
    • 2011-08-24
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2021-05-11
    • 2018-04-05
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多