繁体   English   中英

使用fopen在C中打开文件

[英]Opening a file in C using fopen

我正在尝试使用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本身的值存储在一个简单的字符数组中,如果您输入相同的文件名,那么我在第一个和第二个实现之间确实看不到任何区别。 我觉得这里缺少明显的东西。

不管是否有尾随\\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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM