【发布时间】:2011-07-06 06:54:02
【问题描述】:
char fname[256];
printf("Enter file name\n");
scanf("%123s",fname);
strcat(fname,".txt");
FILE *inputf;
inputf=fopen(fname,"w");
if (inputf!=NULL)
printf("found");
else
printf("not found");
问题是,无论我输入什么文件名,我都会得到一个非 空指针。谁能解释一下为什么??
【问题讨论】:
-
这段代码在什么环境下运行?你自己的电脑?共享终端,可能是学校电脑? SSH访问其他地方?如果你正在运行 linux,“ls -l”的输出是什么?因为您似乎缺乏写入文件系统的权限。
-
你的代码在我的系统上编译得很好。如果不使用“w”参数退出,它会创建文件。你必须检查@junjanes 的建议。
-
如果我没有权限怎么办??我可以抛出适当的错误消息吗?
-
这是一个linux盒子吗?如果是
#include <unistd.h>并查询access(fname, W_OK)。如果文件可写,则返回 0。不同的非零返回值意味着不同的问题。谷歌“unistd access”了解更多信息。