使用gets()让用户进入文件目录来打开文件

Opening a file by getting the user to enter the file directory using gets()

问题

使用键盘输入打开文件 编写一个 C 程序,向用户询问文件名(该名称可能包含 目录路径)并尝试打开文件。该程序显示一条消息“文件 打开 !”或“打开文件时出错”(程序不读取文件,只是尝试打开 它)。使用 gets() 获取用户的输入

所以使用下面的代码,我尝试读取一个文件目录路径,然后将这个文件目录路径复制到 fopen() 中,然后确认文件是否已经打开。文件目录路径由用户使用gets()输入。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char directory[100];
    printf("Please enter the directory path of the file you wish to open.\n");
    gets(directory);
    fp = fopen("%s,directory","r");
    if(fp==NULL)
    {
        printf("\nCannot open file.");
    }
    else
    {
        printf("\nFile open!");
    }
    return 0;
}   

我的问题

无论我放入什么都不起作用,我已经从我创建的其他程序中直接复制了文件目录路径,我知道可以工作。有任何想法吗?

fp = fopen("%s,directory","r");

这真是令人费解。为什么要使用 %s 和 ""?直接使用 directory 作为参数即可。例如

fopen(directory, "r"); // make sure _directory_ refers to file for this function to succeed

gets 也被认为是 dangerous.