使用fopen在C中打开文件

时间:2014-11-17 20:44:42

标签: c file-io input

我正在尝试使用fopen在C中打开一个文件,但我遇到了一个相当奇怪的问题。如果我这样做,它的效果非常好:

ptr_file = fopen("file.txt", "r");

但是如果我尝试这个就行不通了

char file_name[20];    
printf("Enter file name");
scanf("%s",file_name);

ptr_file = fopen(file_name, "r");

file_name本身的值存储在一个简单的字符数组中,如果您输入相同的文件名,我在第一个和第二个实现之间看不到任何区别。我觉得我在这里遗漏了一些明显的东西。

1 个答案:

答案 0 :(得分:0)

无论是否有尾随\n,都会将其作为空格跳过。这是一个简单的例子:

#include <stdio.h>

int main() {

    char file_name[20];

    printf ("\nEnter a filename: ");
    scanf("%[^\n]%*c", file_name);

    FILE *ptr_file = fopen(file_name, "r");

    if (!ptr_file)
        fprintf (stderr, "\nError: failed to open '%s'\n\n", file_name);
    else
        printf ("\n  Successfully opened file: '%s'\n\n", file_name);

    /* do stuff with file */

    if (ptr_file) fclose (ptr_file);

    return 0;
}

<强>输出:

$ ./bin/fileopen

Enter a filename: tolowercnvsn.c

  Successfully opened file: 'tolowercnvsn.c'

它同样适用于:

scanf("%s", file_name);