无法打开txt文件

时间:2017-11-30 19:07:59

标签: c file

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char c[1000];
    FILE *fptr;

    if ((fptr = fopen("program.txt", "r")) == NULL)
    {
        printf("Error! opening file");
        // Program exits if file pointer returns NULL.
        exit(1);
    }

    // reads text until newline
    fscanf(fptr,"%[^\n]", c);
    printf("Data from the file:\n%s", c);
    fclose(fptr);
    return 0;
}

输出错误!打开文件

我在同一个目录中有程序和txt文件。 如何直接访问该文件?

3 个答案:

答案 0 :(得分:1)

根据评论中的建议,尝试将printf替换为perror

if ((fptr = fopen("program.txt", "r")) == NULL)
{
    perror("Error");
    // Program exits if file pointer returns NULL.
    exit(1); // Exiting with a non-zero status.
}

perror原型是

void perror(const char *str)

其中str是包含要在错误消息本身之前打印的自定义消息的C字符串。

然而,文件未被读取的一些原因是

  • 当前工作目录中不存在文件。如果是这种情况,纠正路径应解决问题。
  • 由于与自主访问控制相关的设置,程序可能无权读取文件。也许用文件做chmod

答案 1 :(得分:1)

要进行诊断,请使用系统命令发出 ls dir ,具体取决于您的平台。这会告诉你你在哪里跑步。可能性与您尝试打开的文件位置不同。

答案 2 :(得分:1)

我在Borland 的 TURBOC ++上快速运行了你的程序,它没有抱怨任何警告或错误执行 如前面发布的答案中所述,您应该将printf替换为perror

    CURRENT                              REPLACE BY
printf("Error! opening file");    perror("Error! Opening File.");    

在您找不到文件的情况下printf("Error! opening file");会导致:

<强> Error! Opening file.

但是如果文件perror("Error! Opening File.");不存在program.txt,则可能会出现与此类似的内容,因为程序输出为

<强> The following error occurred: No such file or directory

从上述解释中可以明显看出差异。

关于你的程序,我假设你的文件路径错误或编译器有问题。
尝试以w+模式打开文件,以确保文件存在。