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

如何在C语言中加密字符串?新手代码报错求助

字符串加密代码的错误修正

你的代码存在几处关键错误,导致无法生成预期的加密结果,下面逐一说明并给出修正方案:

错误1:空格判断逻辑错误

第22行的if(*sPtr == '')是非法写法,单引号内必须包含单个字符,空格的正确表示是' ',因此这行应改为:

if(*sPtr == ' ')

错误2:指针操作逻辑错误

在if和else分支中,你错误地重新定义了局部指针char *sPtr,这不仅覆盖了函数参数的指针变量,还把字符值直接赋值给指针(比如char *sPtr = '%';)——我们需要修改的是指针指向的字符内容,而非指针本身。正确写法如下:

  • 空格转%:*sPtr = '%';
  • 字符后移5位:*sPtr += 5;(注意是+=而非=+,=+等价于赋值正5,完全不符合需求)

修正后的完整代码

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

void encryptString(char *sPtr);

int main(void)
{
    char string[] = "This is confidential information"; // 待加密字符串

    printf("加密前的字符串是: %s", string);

    encryptString(string);

    printf("\n加密后的字符串是: %s\n", string);

}

void encryptString(char *sPtr)
{

    while(*sPtr != '\0'){   // 循环直到字符串结束
        if(*sPtr == ' '){    // 将空格转为'%'
            *sPtr = '%';
        }
        else{              // 其余字符在字母表后移5位
            *sPtr += 5;
        }
    ++sPtr;               // 指针后移一位,指向下一个字符
    }
}

运行修正后的代码,即可得到预期的加密结果:Ymnx%nx%htsknijsynfq%nsktwrfynts

内容的提问来源于stack exchange,提问作者Staytuned42

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:50:39