C语言 输出显示中文乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 输出显示中文乱码相关的知识,希望对你有一定的参考价值。

(C语言)我做的是凯撒密码的相关题,前面输出还好,到后来输出变成汉字了。
跪求改进方法。

相关部分的代码:(前略)
void Violent_Caesar(char save[] ,) char result[str_len]; memset(result,0,sizeof(result)); int i , k; for (k=0;k<26;k++) for (i=0;i<strlen(save);i++) result[i] = save[i] + k; if (result[i] < 'a') result[i] += 26; else if (result[i] > 'z') result[i] -= 26; printf("%s" , result); printf("\n");

参考技术A
for (i=0;i<strlen(save);i++)
改 为
for (i=0;i<strlen(save) -1 ;i++)
试下~追问

并不好用,而且i<strlen(save)应该是没错的。

追答

这段没有看出来什么问题
看看调这个函数的地方
可能是 传的字符串 最后一个字符没有处理好
字符串在变短的时候 才出现的乱码

追问

因为是循环了26次,前面的次数都没有问题,只是最后几次出现的乱码,
我个人觉得应该和传的字符串无关,不然整体都应该是乱的。
不知道这么想对不对,麻烦你了。

追答

de 后面 没有字符了
说明 串在变短 对吧
但是变短 有可能 有 没有处理好 \0 的问题
你查一查~
不行
你把你调的代码 粘一下
char result[str_len];
str_len 是传过来的吗? 是不是 要 str_len + 1

追问

不……不显示是因为那部分显示成乱码了。

我上网查了一下,换了一种表示方法:

result[i] = (save[i]-'a'-k+26)%26+'a';
之后的输出就没问题了。

再追问就要收财富值了,总之谢谢你的帮助。

本回答被提问者采纳

以上是关于C语言 输出显示中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

C语言中出现乱码

saystring命令输出乱码怎么解决

英文系统中 MyEclipse 中文显示乱码

PHP 输出简单的中文 乱码问题

我用php输出json 中文显示乱码,请大侠帮忙解决一下

geany写C语言,printf打印中文时显示乱码