用空结构填充 dat 文件

Fill dat file with empty struct

我的目标是创建一个包含 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 个结构初始化为空白?

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

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

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

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

struct item createEmptyRecord = {0};

或者您可以使用 memset:

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