提问人:Anil 提问时间:11/11/2021 更新时间:11/11/2021 访问量:62
为什么在检查 NULL 条件时出现 FILE 指针错误?
Why do I get FILE pointer error while checking NULL condition?
问:
#include<stdio.h>
#include <string.h>
#include <windows.h>
#define PATH "F:\\c\\projects\\Banking Management System\\data\\"
#define F_PWD "pwd.txt"
#define FILENAME(q1, path, f_) q1 path f_ q1
void main() {
printf("\n%s", FILENAME("\"",PATH, F_PWD));
FILE *fp=fopen(FILENAME("\"",PATH, F_PWD), "w");
if (fp==NULL){
perror("\nERROR: ");
exit(EXIT_FAILURE);
}
fprintf(fp,"%d,%s,%f\n",1,"Anil Dhar",1000.00);
fclose(fp);
}
问题
printf 显示正确的文件名和路径: “F:\c\projects\Banking Management System\data\pwd.txt”
但是,perror 显示: 错误:参数无效
它不会创建/写入文件,即使我删除了以下条件:
如果 (fp==NULL){ perror(“\n错误:”); 退出(EXIT_FAILURE); }
为什么 perror 显示“无效参数”?
答:
1赞
dbush
11/11/2021
#1
文件名不用引号括起来。您只需在从命令提示符调用文件以转义并在文件名中使用空格即可。
因此,从宏中取出引号:
#define FILENAME(path, f_) path f_
...
printf("\n%s", FILENAME(PATH, F_PWD));
评论
0赞
Anil
11/11/2021
事实上。删除引号就成功了。谢谢。
评论