首页 > 解决方案 > 初学者,试图读取文件在 ubuntu 中返回一个空指针

问题描述

#define max 5
typedef struct
    {
        char tar[20];
        int trab[31];
    }data;

int main()
{
    int i,j, aux;
    char fname[25];
    data inf[max];
    /*for(i=0;i<max;i++)
    {    
           strcpy(inf[i].tar,inf[i-1].tar);
    }*/
    printf("File name?");
    scanf(" %s", fname);
    FILE *f=fopen("fname","r");
    if(f== NULL) 
    {
        printf("Cannot find\n");
        return 1; 
    }

我尝试读取一个我非常确定位于同一个目录中的文件,但是每次 FILE 指针返回 NULL。

我将不胜感激任何帮助 :(

标签: c

解决方案


尽管您已将其标记为 C++,但您的代码看起来更像 C,所以我使用 C 签名来表示main. 您遇到的主要问题是fname. 您的代码忽略了输入的路径并尝试打开具有文字名称的文件fname

int main(void)
{
    int i,j, aux;
    char fname[25];
    printf("File name? ");
    scanf(" %24s", fname);      /* Always use width specifier on %s */
    FILE *f=fopen(fname, "r");  /* No quotes around fname */
    if( f == NULL ){
        perror(fname);
        return 1; 
    }
    ...

推荐阅读