代码之家  ›  专栏  ›  技术社区  ›  Louis Tran

无法将字符数组(文件名)传递给fopen(文件,r)

  •  1
  • Louis Tran  · 技术社区  · 6 年前

    我希望用户在程序中输入自己想要的文件名,然后程序打开它。我不知道为什么不行,请帮忙。如果我直接在代码上定义路径,它就可以工作。

    FILE *file;
    file = fopen("C:\\Users\\Test\\text.txt", "r");
    if (file) {
        index = 0;
        while ((c = getc(file)) != EOF) {
            printf("ok");
        }
        fclose(file);
    } else {
        printf("Can't open file");
    }
    

    这不管用。

    char inputFile[100];
    
    printf("Enter file name: ");
    scanf("%s", inputFile);
    
    FILE *file;
    file = fopen(inputFile, "r");
    if (file) {
        index = 0;
        while ((c = getc(file)) != EOF) {
            printf("ok");
        }
        fclose(file);
    } else {
        printf("Can't open file");
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Mars    6 年前

    当从代码中读入时,您需要避开“\”,但是scanf没有那么聪明。你只需要按原样输入文本!

    C:\用户\测试\文本.txt

    另外,请注意scanf(“%s”,inputFile)不会处理文件名路径中的空格,因此“我的文档”不起作用。