gpt4 book ai didi

c - 仿射代码错误

转载 作者:行者123 更新时间:2023-11-30 14:49:05 25 4
gpt4 key购买 nike

所以我一直在尝试一些解密算法和密码,并尝试自己做一些。此时我正在用 C 编写一个仿射算法,我试图从我自己解密的 .txt 文件中解密一行,所以这就是我认为出现问题的地方,因为我的代码总是弹出损坏的文本文件并且不继续到下一个任务。

 file = fopen("encr_affine.txt", "r");
if(file)
{
while ((c = getc(file)) != EOF)
putchar(c);
fclose(file);
}


fgets(str,100,file);

if ( fgets(str,100,file) == NULL )
{
fprintf(stderr, "Text file corrupted\n");
return -1;
}

这里有什么错误吗?是读取txt文件的整行还是只读取第一个字符?为什么它不继续执行下一个任务?

提前谢谢

最佳答案

它总是打印您的文本文件损坏消息,因为文件到达那里时总是关闭(或从不打开)。

看看第一部分的作用:

file = fopen("encr_affine.txt", "r");
if(file)
{
while ((c = getc(file)) != EOF)
putchar(c);
fclose(file);
}

它打开文件,然后(如果它确实打开了),它会逐字节读取整个文件,然后将其全部打印到标准输出。然后关闭文件。

然后您尝试在关闭文件上执行操作:

fgets(str,100,file);

这不会执行任何操作,因为文件已关闭,并且会返回NULL。如果文件从未打开过,它仍会因错误而返回 NULL

但是你再试一次:

if ( fgets(str,100,file) == NULL )                      
{
fprintf(stderr, "Text file corrupted\n");
return -1;
}

这个fgets(str,100,file)总是返回NULL,因为文件再次被关闭。

也许您真正想做的是在第一个循环中一次处理一个字节,然后使用 putchar() 打印它们。

关于c - 仿射代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50008813/

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