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");
问题是,无论我输入什么文件名,我都会得到一个非 null pointer.can任何一个解释原因??
答案 0 :(得分:3)
fopen(filename," w")将创建一个新文件。因此,如果您输入合法文件名并具有适当的文件系统权限,则应该会成功。
如果您尝试打开现有文件,请使用:
fopen(filename, "r")
(注意" r"模式,而不是" w"。)
答案 1 :(得分:0)
不是这样的:
char fname[256];
printf("Enter file name\n");
scanf("%123s",fname);
strcat(fname,".txt"); F
FILE *inputf; inputf=fopen(fname,"w"); // <--!!!
if (inputf!=NULL) printf("found");
else printf("not found");
but this instead:
char fname[256];
FILE *inputf;
inputf=fopen(fname,"w");
printf("Enter file name\n");
// you know that you can't ever, EVER use scanf( ) so
// remove this time bomb and use something else
scanf("%123s",fname);
strcat(fname,".txt");
inputf=fopen(fname,"w");
if (inputf!=NULL) {
printf("found");
}
else {
printf("not found");
}
现在,什么指针不是NULL?您无法按原样编译代码,因此您如何知道什么是NULL或不是NULL?
- 皮特