gpt4 book ai didi

c - c语言文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:37:01 25 4
gpt4 key购买 nike

我需要关于我的代码的帮助,我得到了一些工作,这是其中一项作业。


假设使用编码/解码方案创建了一个加密文件。

根据给定的映射,每个字母都被其他字母替换,如下所示。

char * letters = "abcdefghijklmnopqrstuvwxyz";

char * enc = "kngcadsxbvfhjtiumylzqropwe";

例如,在对一段文本进行编码时,每个a都变成了一个k,而每个k都变成了一个a解码时。

您将编写程序,对文件进行编码或解码,然后使用上述映射对文件进行编码或解码。

大写字母的映射方式与上述小写字母相同,但仍保持大写。

例如,在对文件进行编码时,每个“A”都会变成“K”,而在解码时,每个“K”都会变成“A”。

数字和其他字符未编码并保持不变。

编写程序读取文件并将文件编码为加密文件。并编写程序获取加密文件并解码为原始文件。您的程序应提示用户输入输入文件名和输出文件名。

询问输入文件名/输出文件名(加密文件)。使用上述编码/解码进行加密。

请求加密文件并解码为原始输入文件。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
char letters[]={"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
char enlet[]={"kngcadsxbvfhjtiumylzqropweKNGCADSXBVFHJTIUMYLZQROPWE"};
char infile[20];
char outfile[20];
char ch;
int i;

FILE *org, * enc, *dec;

printf("Enter file name (***.txt) : ");
gets(infile);

printf("Enter saving file name (***.txt) : ");
gets(outfile);

org = fopen(infile,"r");
enc = fopen(outfile,"w+");

while((ch=fgetc(org))!=EOF)
{
for(i=0;i<52;i++)
{
if(letters[i]==ch)
{
ch=enlet[i];
}
}
fputc(ch,enc);
}
fclose(org);
fclose(enc);

return 0;
}

此代码有效,但字母没有正确更改。如果我的原始文件中有“abcdefghijklmnopqrstuvwxyz”,然后,它在编码文件中发生“felcadlpbrfhjeiqmwleqropwe”。

我预计它会是“kngcadsxbvfhjtiumylzqropwe”我不知道我的代码中有什么错误。

最佳答案

您的 if block 应显示为:

if ( letters[i]==ch )
{
ch = enlet[i];
break;
}

这样 ch 就不会被替换两次。即,当您知道该输入文件位置的替换时,中断并继续。

关于c - c语言文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663112/

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