删除二进制文件末尾的所有0 C语言代码
时间: 2024-05-11 17:19:30 浏览: 86
可以使用以下代码删除二进制文件末尾的所有0:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
long size;
fp = fopen("binary_file.bin", "rb+");
if (fp == NULL) {
printf("Error: Cannot open file!\n");
exit(1);
}
// 获取文件大小
fseek(fp, 0L, SEEK_END);
size = ftell(fp);
// 倒序遍历文件内容,删除末尾的0
for (long i = size - 1; i >= 0; i--) {
fseek(fp, i, SEEK_SET);
char c;
fread(&c, sizeof(c), 1, fp);
if (c != 0) {
// 找到第一个非0字符后,将文件截断到该位置
ftruncate(fileno(fp), i + 1);
break;
}
}
fclose(fp);
return 0;
}
```
注意,这段代码需要用到文件操作函数,需要在编译时链接对应的库。在 Linux 系统中,需要使用 `-lrt` 参数链接 `librt` 库。在 Windows 系统中,需要使用 `-lmsvcrt` 参数链接 `msvcrt.lib` 库。