首页 > 解决方案 > 用空结构填充 dat 文件

问题描述

我的目标是创建一个包含 100 条空记录的 .dat 文件。我已经使用以下代码启动了该程序:

#include <stdio.h>

// item structure definition
struct item {
int number; 
char name[10]; 
int quantity;
float cost;
};

// begin main function
int main(){
    int i;
    FILE *cfPtr; 
    cfPtr = fopen("hardware.dat", "w");

    struct item createEmptyRecord = {0, "", "", 0.0};


     for (i=0;i<100;i++){
        // the fwrite function in the stdio.h library 
        // declartion size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
        fwrite (&createEmptyRecord, sizeof (struct item), 1, cfPtr);
    } // end for loop

    fclose(cfPtr);

} // end main function

我得到一个 .dat 输出,但是当我打开它以检查所有项目是否为 NULL 并且它们具有以下字符时。如何检查这是否是垃圾值,或者我实际上将 100 个结构初始化为空白?

@@@@@@@@@@@@@@@@@@@@

标签: cfwrite

解决方案


struct item createEmptyRecord = {0, "", "", 0.0};

请注意,您在此处传递""以初始化int成员。字符串文字""与 NULL 不同。如果您提高编译器的警告级别,它应该警告您 aconst char*被转换为int.

将结构初始化为全零的正确方法是:

struct item createEmptyRecord = {0};

或者,您可以使用memset

struct item createEmptyRecord;
memset(&createEmptyRecord, 0, sizeof(createEmptyRecord));

推荐阅读