首页 > 解决方案 > CS50- Lab4- Volume- For Loop Vs Array for header copy

问题描述

我已使用以下代码成功编译了 volume.c,以将标头从输入文件复制到输出文件。但是,我已经看到 uint8_t header[HEADER_SIZE] 通常用于我稍后检查的解决方案中。

我的版本

// TODO: Copy header from input file to output file  
 uint8_t headers;
    for (int i = 0; i < HEADER_SIZE; i ++)
    {
        fread(&headers, sizeof(uint8_t), 1, input);
        fwrite(&headers, sizeof(uint8_t), 1, output);
    }

典型解决方案

// TODO: Copy header from input file to output file
    uint8_t header[HEADER_SIZE];
    fread(&header, sizeof(header), 1, input);
    fwrite(&header, sizeof(header), 1, output);

除了稍微增加运行时间之外,我的方法还有哪些其他缺点?

标签: arrayscfor-loopruntimecs50

解决方案


如果我没记错的话,稍微增加运行时间是一种轻描淡写的说法,它会大大增加运行时间,因为它会循环每个标题并使其阅读起来更加复杂。而典型的解决方案效率更高,并将其存储到数组中,使其更易于访问和阅读。


推荐阅读