gpt4 book ai didi

c - 在c中实现异或加密时没有输出到磁盘

转载 作者:行者123 更新时间:2023-11-30 17:31:14 26 4
gpt4 key购买 nike

我有一个奇怪的问题:以下代码旨在实现异或加密,但我无法调试为什么没有任何内容写入磁盘。我认为我使用 fseekfputc 不正确。以下是我的问题的一个工作示例。我做错了什么?

#include <stdio.h>
#include <stdlib.h>

int main(void) {
FILE *key, *data;
char keyf[] = "/sdcard/key";
char dataf[128];
int c0, c1, c2;
long int i;

key = fopen(keyf, "r+");
if (key == NULL) {
printf("%s missing\n", keyf);
exit(1);
}
printf("data file:\n");
i = 0;
while ((c0 = getc(stdin)) != '\n' &&
i < 128)
dataf[i++] = (char)c0;
data = fopen(dataf, "r");
if (data == NULL) {
printf("%s missing\n", dataf);
exit(2);
}
i = 0;
while ((c0 = fgetc(key)) != EOF &&
(c1 = fgetc(data)) != EOF) {
while (!c0) c0 = fgetc(key);
c2 = c0 ^ c1;
fseek(data, i++, SEEK_SET);
fputc(c2, data);
printf("%c", c2);
}
fflush(data);
fclose(key);
fclose(data);
return 0;
}

最佳答案

您已以只读方式打开数据。您需要以读写方式打开它,并且您不希望截断,因此您需要模式 "r+",该模式打开文件以进行读/写,起始位置为两者......当您从文件中读取时,文件指针将递增,因此要写回您刚刚读取的字符,您还需要使用 fseek() 进行查找以返回。

Here is a link to the fopen man page which describes access modes.

This is the fseek man page which will describe how to move your file position around.

关于c - 在c中实现异或加密时没有输出到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742326/

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