gpt4 book ai didi

c - 如何避免计算非字母数字字符

转载 作者:行者123 更新时间:2023-11-30 19:42:04 26 4
gpt4 key购买 nike

我正在为 CS50x 制作一个加密程序,但有一个小问题。我正在尝试使用维吉尼亚密码(使用单词作为 key 的密码)来加密一些文本。我遇到的问题是,每当我有空格或非字母字符时,我的字符就会不断增加。根据规范,它不应该...因此,某些角色使用了错误的 key ...知道我如何解决这个问题吗?

这是我的一小部分代码,可以帮助您理解问题。

for(int x=0, i = 0 , textlen = strlen(text); x < textlen; x++ , i++ ) 
if (isalpha(text[x]))
{

if (islower(keyword[i % num_letters]))
{
if (islower(text[x]) && ((text[x] + (keyword[i % num_letters]) - 'a') <= 'z'))
{
text[x]= (text[x] + (keyword[i % num_letters]) - 'a' );
}

else if (islower(text[x]) && ((text[x] + (keyword[i % num_letters]) - 'a') > 'z' ))
{
text[x]= ('a'+ ((((text[x]) - 'a') + ((keyword[i % num_letters]) - 'a' )) % 26));

}
}
printf("%c", text[x]);
}
else

// Print the non-alpha char as they are
{
printf("%c", text[x]);

}

希望这段代码能帮助你理解。这只是代码中的一个片段,但它应该足以理解问题并可能提出解决方案。

谢谢!

最佳答案

这可能是一种奇怪的解决方法,但我认为一个简单的解决方案是在您的 else 语句中减少您的 i 值。问题是,无论您是否输入 if/else 语句,两者都将完成并返回 top,您在其中递增它,就好像没有发生任何变化一样。一个更具可读性的解决方案是将 i 变量的控制权从 for 循环本身中移开,并且仅在打印 char 之前/之后增加 i

关于c - 如何避免计算非字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875079/

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