【发布时间】:2013-10-27 09:03:12
【问题描述】:
我正在尝试打开位于不同目录中的文件,但我总是收到错误消息。我的代码如下所示:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file;
char file_name[25];
printf("What file do you want? ");
scanf("%s", file_name);
file = fopen("Dir1/Dir2/file_name","r");
if( file == NULL )
{
printf("There is no file by that name\n");
exit;
}
我怀疑问题出在“fopen”部分。如果我输入一个文件名(例如 file =fopen ("Dir1/Dir2/list.txt", "r") 那么它将起作用。但是,我希望用户输入文件名。任何帮助将不胜感激. 谢谢!
【问题讨论】:
-
您在处理用户输入时犯了一个非常根本的错误:如果您不知道输入内容的长度(并且您永远不知道用户做了什么),请对其进行硬性限制。您可以使用
fgets()而不是scanf()执行此操作,也可以使用安全的scanf格式字符串,例如%24s。 -
注意:文件名可能包含空格。
scanf("%s", file_name)不会将它们扫描到file_name。考虑scanf("%24[\^n]", file_name)或fgets()。