gpt4 book ai didi

c - 零填充 : How to remove zeroes from the end of file?

转载 作者:行者123 更新时间:2023-11-30 15:41:28 24 4
gpt4 key购买 nike

我需要使用 C 语言来实现这个方法( https://en.wikipedia.org/wiki/Padding_%28cryptography%29#PKCS7 ),但 C 语言没有方便的函数来实现这一点。

我是这样添加的

int main()
{
FILE *file=fopen("1.xlsx", "a");

file_add(16,file);
fclose(file);
}
void file_add(int SizeOfBlock, FILE *file )
{
fseek(file, 0, SEEK_END);
int size = ftell(file); // file size in bytes
fseek(file, 0, SEEK_SET);

int diff = size%SizeOfBlock;

char arr[16] = "0000000000000000"; //16 zeroes
fwrite(arr, SizeOfBlock-diff, 1 , file); // here I added to end of file missing 0 to make size of file be dividing to SizeOfBlock

}


void file_remove (int SizeOfBlock, FILE *file)
{
// by this function I need to delete these zeroes
// max amount of zeroes is limited by SizeOfBlock
}

我怎样才能做到这一点? SizeOfBlock 只能是 8 或 16

最佳答案

要截断文件,您可以使用以下函数:

#include <unistd.h>
int ftruncate(int fildes, off_t length);
int truncate(const char *path, off_t length);

由于 ftruncate 使用文件描述符,因此您必须使用 filenoFILE 结构中获取该描述符。

ftruncate(fileno(file), length);

如果您指定的新长度比当前文件长,则文件将会增长,考虑到函数的名称,这可能有点误导。所以它实际上也可以用来增大文件,用 \0 填充它。

关于c - 零填充 : How to remove zeroes from the end of file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20514756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com