【发布时间】:2015-11-24 12:09:01
【问题描述】:
当我给函数提供文件目录(比如 /home/username/filename.txt )时,我得到了错误:
没有这样的文件或目录 分段错误(核心转储)
获取名称的部分工作正常,但 fopen() 返回 NULL
我的函数代码是:
#define L_SIZE 128
FILE* openFile()
{
char dir[L_SIZE];
printf("Enter the file's directory: ");
if(fgets( dir, L_SIZE, stdin ))
{
printf("\nWe got the directory: %s\n",dir);
FILE* fp;
if ( (fp = fopen( dir, "r" )) == NULL )
{
perror("An error has occured");
return NULL;
}
else
{
return fp;
}
}
else
{
printf("Sorry, An error has occurs.\n");
return NULL;
}
}
【问题讨论】:
-
在哪里程序崩溃了?我猜它在调用你的函数的代码中,你不检查它是否返回
NULL。 -
顺便说一句,重要的是要知道
fgets将在它写入的缓冲区中包含换行符,这是您无法处理的。 -
@JoachimPileborg,谢谢,我会努力解决的。
-
它在哪里崩溃?我在你的程序 sn-p 中没有看到任何可能发生崩溃的地方。