2016-11-26 79 views
-2

我想从C编程中的文件读取,我以为我做了一切正常,但我得到一个错误:“无法打开文件...”所以它显然没有正确访问该文件,我不能为什么。文件“A00924956Results2016”与我的程序文件位于同一控制台应用程序文件夹中。因此,我不应该使用文件路径吗?任何帮助将不胜感激。 (我已经简化了我正在尝试阅读的内容,只是为了在继续执行我的任务之前能够访问该文件)。我还将附上我的文件浏览器的截图。 File explorer screenshot如何从C编程的文件中读取数据?

#include <stdio.h> 
#include <math.h> 
#include <string.h> 

void check(FILE*); 

int main() 
{ 

    FILE *fp1; 
    char ch, a; 

    fp1 = fopen("A00924956Results2016", "r"); 
    check(fp1); 

    fscanf(fp1, "%c", &a); 
    printf("First character is %c", a); 

    fclose(fp1); 

    getchar(); 
    return 0; 
} 
void check(FILE *fp1) 
{ 
    fp1 = fopen("A00924956Results2016.dat", "r"); 
    if (fp1 == NULL) 
    { 
     printf("Not accessing file properly\n"); 
    } 
} 
+0

您正在编译并将可执行文件保存在同一目录中吗? 另外,在check()方法中,只检查参数fp1是否为null。不要尝试再次打开文件。 – hbagdi

+1

尝试'fp1 = fopen(“A00924956Results2016.txt”,“r”);'(默认情况下Windows默认隐藏已知的扩展名),你想要做什么:'fp1 = fopen(“A00924956Results2016.dat”,“r “);'?删除并尝试前者。 –

+0

此外,发布此类问题时,请尽可能缩短代码。从代码中删除所有不相关的东西。总是尝试做一个[mcve] –

回答

0

我认为你要打开的文件是一个文本文件。因此在使用fopen()函数时,需要使用带文件名的.txt扩展名来正确打开它。 我认为它会正常工作,如果你打开它时在文件名的末尾添加.txt。

0

在fopen()函数中,您需要使用扩展名“A00924956Results2016.txt”而不是“A00924956Results2016”来写入整个文件名。