【问题标题】:Why do I get FILE pointer error while checking NULL condition?为什么在检查 NULL 条件时出现 FILE 指针错误?
【发布时间】:2021-12-23 14:31:42
【问题描述】:
#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\银行管理系统\data\pwd.txt"

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

  3. 它不会创建/写入文件,即使我删除了以下条件:

    如果(fp==NULL){ perror("\n错误: "); 退出(EXIT_FAILURE); }

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

【问题讨论】:

    标签: c gcc codeblocks preprocessor-directive file-pointer


    【解决方案1】:

    文件名不被引号包围。您只需在从命令提示符中调用文件时使用它们来转义文件名中的空格。

    所以从宏中取出引号:

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

    【讨论】:

    • 确实如此。删除引号起到了作用。谢谢。
    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2021-10-21
    • 2019-12-05
    • 2020-07-25
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多