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");
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语言 输出显示中文乱码的主要内容,如果未能解决你的问题,请参考以下文章