首页 > 解决方案 > 如何修复不读取文本文件的功能(验证输入)?

问题描述

每当我输入一个文本文件供我的程序读取时,我总是会收到以下消息:

Unable to open file: big_file.txt
Ending program.

我不确定程序的哪个部分不起作用。我假设它是 main() 或 validate_input() 函数中的东西:

FILE* validate_input(int argc, char* argv[]){

    FILE* fp = NULL;

    if(argc < 2){
        printf("Not enough arguments entered.\nEnding program.\n");
        exit(0);
    }
    else if(argc > 2){
        printf("Too many arguments entered.\nEnding program.\n");
        exit(0);
    }

    fp = fopen(argv[1], "r");

    if(fp == NULL){
        printf("Unable to open file: %s\nEnding program.\n", argv[1]);
        exit(0);
    }

    return fp;

}


int main(int argc, char* argv[]){
    char** lines = NULL;
    int num_lines = 0;
    FILE* fp = validate_input(argc, argv);

    read_lines(fp, &lines, &num_lines);
    print_lines(lines, num_lines);
    free_lines(lines, num_lines);
    fclose(fp);

    return 0;
}

我希望程序输出给定文本的每一行,前面有一个数字,计算每一行,但每次我输入一个文件时,它都声称它无法读取。

更新:当我添加fprintf(stderr, "Unable to open file %s: %s\n", argv[1], strerror(errno));

我的输出是:

Unable to open file big_file.txt: No such file or directory

但文件在我的桌面上。

不确定这是否是文件的正确位置,但它是: 在此处输入图像描述

标签: cclion

解决方案


推荐阅读