我编译代码然后运行它,但它返回“将加密数据写入文件时出错。所以我假设问题出现在fwrite中。
但我无法确定它。
如果你能解释一下非常有用的问题,我需要一些帮助
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int encrypt_data(FILE *);
int main(void)
{
FILE *fp;
int return_code;
printf("Please enter the file to be encrypted: ");
char filename[200];
scanf("%s", filename);
fp=fopen(filename,"r");
return_code = encrypt_data(fp);
return 0;
}
int encrypt_data(FILE *disk_fp)
{
int i;
unsigned long int file_size;
int key_length;
char *file_buff = NULL;
char key[] = "12`3-vk0fn";
key_length = strlen(key);
fseek(disk_fp, 0, SEEK_END);
file_size = ftell(disk_fp);
rewind(disk_fp);
file_buff = malloc(file_size);
if( fread(file_buff, file_size, 1, disk_fp) != 1)
{
printf("Error in reading file\n");
return -1;
}
for( i=0; i<file_size; i++)
{
file_buff[i] = file_buff[i] ^ key[i%key_length];
}
rewind(disk_fp);
if( fwrite(file_buff, file_size, 1, disk_fp) != 1)
{
printf("Error in writing encrypted data to file\n");
return -1;
}
free(file_buff);
fclose(disk_fp);
return 0;
}
答案 0 :(得分:2)
您正在以“r”模式打开文件,这意味着只读。然后你尝试写一些东西。顺便说一句,你没有检查你是否没有错误地打开文件,并且当fwrite / fread失败时不要关闭它。