gpt4 book ai didi

c - 我需要重命名文件,但我不明白出了什么问题,文件已加密,但名称没有改变

转载 作者:行者123 更新时间:2023-11-30 19:01:46 25 4
gpt4 key购买 nike

我需要重命名文件,但我不明白出了什么问题,文件被加密了,但名称没有改变,如何正确使用rename()函数。我需要将文件名更改为“encrypt.yes”

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


int main(void)
{

char new[20];
char old[20];
int rename(const char *old, const char *new);
int ch;
FILE *fps;
printf("Enter file name (with extension like file.txt) to encrypt : ");
strcpy(new,"encrypt.yes");
rename(old, new);
scanf("%s", old);

fps = fopen(old, "r+");
if (fps == NULL) {
printf("Could not open file '%s'\n", old);
return 1;
}
while ((ch = fgetc(fps)) != EOF) {
ch += 100;
fseek(fps, -1, SEEK_CUR);
fputc(ch, fps);
fseek(fps, 0, SEEK_CUR);

}

fclose(fps);

printf("File '%s' encrypted successfully\n", old);
return 0;

}

最佳答案

不知道我是否完全理解您的意思,但我认为您正在尝试按原样修改每个字节。适应this answer对于您的代码,您可以执行如下操作。 注意:仍有很大的改进空间和错误处理。

另外,我知道您将其标记为 Windows,但我的 Windows VM 目前出现问题,因此我使用 gcc 在 Linux 上编写并测试了此代码。它可能按原样在 Windows 上运行,但我没有测试它。尽管如此,我认为它足够简单,足以让你达到 95%。关键是以“r+”模式打开文件,以便您可以读取和写入它。

最后,不要掩盖迄今为止从 Paul Ogilvie 和 David C. Rankin 那里得到的评论;这是个好建议。

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

int main()
{
char fname[20];
int ch;
FILE *fps;

printf("Enter file name (with extension like file.txt) to encrypt : ");
scanf("%s", fname);

fps = fopen(fname, "r+");
if (fps == NULL) {
printf("Could not open file '%s'\n", fname);
return 1;
}

while ((ch = fgetc(fps)) != EOF) {
ch += 100;
fseek(fps, -1, SEEK_CUR);
fputc(ch, fps);
fseek(fps, 0, SEEK_CUR);
}

fclose(fps);

printf("File '%s' encrypted successfully\n", fname);
return 0;
}

关于c - 我需要重命名文件,但我不明白出了什么问题,文件已加密,但名称没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57289750/

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