gpt4 book ai didi

c - 为什么我的凯撒密码程序执行时会出错?

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:20 26 4
gpt4 key购买 nike

我正在研究凯撒密码程序。目前我正在尝试加密一条消息。我正在编写一个函数来完成这个任务。编译器执行代码没有任何错误,但是代码的最终输出,它应该显示加密的消息,它产生了,加密的消息是:

����

为什么会这样??我的错误代码如下。任何形式的帮助将不胜感激。提前谢谢你。

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

最佳答案

代码甚至不应该编译。 (char(*)(char*, int)char 之间的类型不匹配。)

return (encrypt_rot);

返回函数encrypt_rot 的地址。也许您想编写 return a;。但是你应该知道,你不应该从函数返回局部变量的地址(在这种情况下是a),因为一旦函数返回到它的调用者并且返回的指针是不再有效。 encrypt_rot 的返回类型 chara 的类型 char[100] 不匹配> 或者,在这种情况下 return a; 它是 char *

我建议您就地修改参数 x:

void encrypt_rot(char x[100], int y)
{
for (size_t i = 0; i < 100 && x[i] != '\0'; ++i)
{
x[i] += y;
if (x[i] > 'z')
x[i] -= 26;
}
}

顺便说一句,你应该为你的变量想出更好的名字。

scanf(" %[^\n]s", message);

你不应该,永远,真的永远不要在没有指定 SIZE 的情况下使用 %s 格式说明符来防止缓冲区溢出:

scanf(" %99[^\n]", message);

关于c - 为什么我的凯撒密码程序执行时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55842055/

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