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

Can't pass a char array (file name) to fopen(file,r)

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

有效。

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");
}

从代码读入时,您需要转义“\”,但 scanf 不那么聪明。您只需按原样输入文本!

C:\Users\Test\text.txt

此外,请注意 scanf ("%s", inputFile) 不会处理文件名路径中的空格,因此 "My Documents" 将不起作用。