【问题标题】:fread not loading in whats in my binary file?fread 没有加载我的二进制文件中的内容?
【发布时间】: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


【解决方案1】:

要在系统驱动器的根目录中创建和更新文件,必须在管理员的命令提示符下执行程序。
所以,程序没能做到。

为此,您希望将文件的创建更改为用户目录,或者需要通过调用管理命令提示符来运行程序。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多