linux里.c写一个图片加密程序。1:打开文件 2:读取文件前十个字节内容read 3:把这十个字节的内容逆序 4:重新写回文件write 5:关闭程序
时间: 2024-02-17 09:04:58 浏览: 25
以下是一个简单的图片加密程序的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HEADER_SIZE 10
int main(int argc, char *argv[])
{
if (argc != 2) {
printf("Usage: %s <image_file>\n", argv[0]);
return 1;
}
char *file_name = argv[1];
// 打开文件
FILE *fp = fopen(file_name, "r+b");
if (fp == NULL) {
printf("Can't open file %s\n", file_name);
return 1;
}
// 读取文件头部
char header[HEADER_SIZE];
if (fread(header, HEADER_SIZE, 1, fp) != 1) {
printf("Can't read file header\n");
fclose(fp);
return 1;
}
// 把文件头部逆序
for (int i = 0; i < HEADER_SIZE / 2; i++) {
char temp = header[i];
header[i] = header[HEADER_SIZE - i - 1];
header[HEADER_SIZE - i - 1] = temp;
}
// 重新写回文件
fseek(fp, 0, SEEK_SET);
if (fwrite(header, HEADER_SIZE, 1, fp) != 1) {
printf("Can't write file header\n");
fclose(fp);
return 1;
}
// 关闭文件
fclose(fp);
printf("Encryption done\n");
return 0;
}
```
这个程序的思路比较简单,首先打开文件,然后读取文件的前10个字节,将这10个字节逆序,最后将逆序后的10个字节重新写回文件。需要注意的是,图片文件是二进制文件,所以我们需要以二进制模式打开文件("r+b"),并使用 fread 和 fwrite 函数来读写文件。