【发布时间】:2015-05-24 15:31:35
【问题描述】:
基本上,我已经将文本写入文件并听说在程序开始时将内容读回我的数组的步骤类似,但没有读回任何内容。这是我的代码
void backUp(PAYROLL employee[], long int *pCounter)
{
FILE *record;
errno_t result = fopen_s(&record, "c:\\record.bin", "a+b");
if (record != 0){
fwrite(employee, sizeof(PAYROLL), 1 , record);
fclose(record);
}
}
void upload(PAYROLL employee[], long int *pCounter)
{
FILE *record;
errno_t result = fopen_s(&record, "c:\\record.bin", "r+b");
if (record != 0)
{
fread(employee, sizeof(PAYROLL), 1, record);
fclose(record);
}
}
【问题讨论】:
-
提示:PAYROLL 数组有多大,写入后文件有多大?
-
sizeof(employee) 给了我 136,000,000 除非你在谈论元素然后数组有 1,000,000 个元素并且文件现在是 544 字节从其他运行
-
检查您的返回值,尤其是在您查找错误时。特别是 fopen 和 fread (duh)。
-
阅读 MS 的文档,我通常可以推荐,尤其是在发生意外错误时 --msdn.microsoft.com/en-us/library/z5hh6ee9.aspx --,我无法保证传递给 fopen_s 的文件指针地址参数将设置为发生错误时为 null。该网站明确指出“在对文件执行任何进一步操作之前,始终检查返回值以查看函数是否成功。”
-
136,000,000 -- 我希望你不是在处理 RL 数据。
标签: c arrays file fwrite fread