You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50 Pset2 Caesar代码输出匹配但check50报错求助

问题分析与修复

你的Caesar密码代码本地输出看似正常,但check50检测失败的核心原因是循环处理了字符串的终止符\0,导致输出中包含了一个不可见的空字符——肉眼无法察觉,但check50的测试用例对输出格式要求严格,会识别到这个多余字符并判定不匹配。

具体问题点

在main函数的加密输出部分:

int lng = strlen(plain)+1;
for (int a = 0; a < lng ;a++)
{
    printf("%c", crypt(key, plain[a]));
}

strlen(plain)返回的是字符串的有效字符长度(不包含末尾的\0),你额外加1后,循环会遍历到plain[strlen(plain)],也就是字符串的终止符\0。crypt函数会直接返回该字符,printf输出它后,会产生check50能检测到的多余输出。

修复方案

将循环长度改为strlen(plain),无需加1:

int lng = strlen(plain);
for (int a = 0; a < lng ;a++)
{
    printf("%c", crypt(key, plain[a]));
}

修改后循环仅处理字符串中的有效字符,不会触及终止符\0,输出即可完全符合check50的测试要求。

额外说明

你的crypt函数逻辑完全正确,字母的偏移处理没有问题,仅需修正循环范围即可通过检测。

内容的提问来源于stack exchange,提问作者Emre Kırmızı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:25:18