c - 用空结构填充 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 个结构初始化为空白?
@@@@@@@@@@@@@@@@@@@@
解决方案
struct item createEmptyRecord = {0, "", "", 0.0};
请注意,您在此处传递""
以初始化int
成员。字符串文字""
与 NULL 不同。如果您提高编译器的警告级别,它应该警告您 aconst char*
被转换为int
.
将结构初始化为全零的正确方法是:
struct item createEmptyRecord = {0};
或者,您可以使用memset
:
struct item createEmptyRecord;
memset(&createEmptyRecord, 0, sizeof(createEmptyRecord));
推荐阅读
- r - 循环到通过矩阵
- r - rmarkdown/bookdown:即时编辑 `metadata$abstract`?
- linux - 在 ASLR 系统上运行非位置无关的可执行文件
- image - facebook如何在聊天框中检测带有url的图像
- c# - 使用 ITextSharp 将 HTML 页面转换为 PDF 时缺少 CSS 样式
- logging - gwt 日志记录不起作用
- powershell - 引用清单中 FileList 属性中包含的文件
- angular - 如何在茉莉花中测试 map() 响应 JSON
- arrays - C++ 如何从字符串数组元素中增加 Int 变量
- javascript - 将特定图像设置为 Div