我有这个超级简单的代码,我读取8个字节的块(我将在代码中稍后加密它们),然后将它们写在一个新文件中。
它运行良好,但最后8个字节没有写入。 知道为什么吗?
#include #include #include #include int main() { uint64_t data; FILE *input, *output; // create output file output = fopen("output.txt", "w"); // read file input = fopen("test.txt", "rb"); if(input) { while(fread(&data, 8, 1, input) == 1) { fwrite(&data, 8, 1, output); } size_t amount; while((amount = fread(&data, 1, 8, input)) > 0) { fwrite(&data, 1, amount, output); } fclose(input); fclose(output); } return EXIT_SUCCESS; }
fread(&data, 8, 1, input)
尝试将8个字节的一个“项目”读入缓冲区,并返回项目数。 如果从当前位置到EOF少于8个字节,则返回0。
一种可能的解决方案是读取8个项目,而不是1个字节:
ssize_t amount; while ((amount = fread(&data, 1, 8, input)) > 0) { fwrite(&data, 1, amount, output); }
在while块中,您可以检查amount
是否为8或更少,用于加密方法。
以上就是c/c++开发分享在C中读取和写入64位64位相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519182.html