为什么在检查 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);
}

问题

  1. printf 显示正确的文件名和路径: "F:\c\projects\Banking 管理 System\data\pwd.txt"

  2. 但是,错误显示: 错误:参数无效

  3. 它不会create/write进入文件,即使,我删除了以下条件:

    if (fp==NULL){ 错误(“\n错误:”); 退出(EXIT_FAILURE); }

为什么 perror 显示“无效参数”?

文件名没有用引号引起来。您只需在从命令提示符调用文件时使用它们来转义和文件名中的空格。

所以从宏中取出引用:

#define FILENAME(path, f_)  path f_
...
printf("\n%s", FILENAME(PATH, F_PWD));