C 加密代码不';不要写回文件
我编译代码,然后运行它,但它返回“将加密数据写入文件时出错。因此我假设问题出在fwrite中的某个地方。” 但我无法准确指出 我需要一些帮助,如果你能解释这个问题,这将是非常有帮助的,谢谢C 加密代码不';不要写回文件,c,C,我编译代码,然后运行它,但它返回“将加密数据写入文件时出错。因此我假设问题出在fwrite中的某个地方。” 但我无法准确指出 我需要一些帮助,如果你能解释这个问题,这将是非常有帮助的,谢谢 #include <stdio.h> #include <string.h> #include <stdlib.h> int encrypt_data(FILE *); int main(void) { FI
#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;
}
#包括
#包括
#包括
int加密_数据(文件*);
内部主(空)
{
文件*fp;
int返回_码;
printf(“请输入要加密的文件:”);
字符文件名[200];
scanf(“%s”,文件名);
fp=fopen(文件名,“r”);
返回\u代码=加密\u数据(fp);
返回0;
}
int加密\u数据(文件*磁盘\u fp)
{
int i;
无符号长整型文件大小;
int键长度;
char*file_buff=NULL;
字符键[]=“12`3-vk0fn”;
密钥长度=strlen(密钥);
fseek(磁盘fp,0,寻道结束);
文件大小=ftell(磁盘大小);
倒带(磁盘_fp);
file\u buff=malloc(文件大小);
如果(fread(文件大小,文件大小,1,磁盘大小)!=1)
{
printf(“读取文件时出错\n”);
返回-1;
}
对于(i=0;i您正在用“r”打开文件"模式,这意味着只读。然后您尝试写入一些内容。顺便说一句,当fwrite/fread失败时,您不会检查打开的文件是否没有错误,也不会关闭它。为什么您希望fwrite
的返回值为1?非常接近的副本。如果您想知道为什么系统调用失败,请尝试让系统告诉您。Inst阅读printf(“我模棱两可的错误消息”)
,尝试perror(“fwrite”)
非常感谢William Pursell和Adrian Krupa…Adrian这就像你在只读中说的,William你认为这个noob程序员perror()谢谢。