nanke1006
nanke1006
2015-09-12 02:26
采纳率: 66.7%
浏览 2.1k
已采纳

关于C语言的问题字符串+1问题

//给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,
// 如aBf转换成bCg,字符串内的其他字符不改变,给定函数,
//编写函数 void Stringchang(const char*input,char*output) 其中input是输入字符串,output是输出字符串
#include
#include
void stringchang(const char*input,char*output)
{
for(int i=0;i<255;i++)
{
output[i]=input[i]+1;
switch(input[i])
{
case'z':output[i]='a';break;
case'Z':output[i]='A';break;
}
if(input[i]=='\0')
break;
}

}

void main()
{
char input[255];
char output[255];
gets(input);
stringchang(input,output);
puts(output);
}
为什么输出结果总是会乱码?
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • github_27756899
    gh_99 2015-09-13 14:35
    已采纳

    修改后的代码:
    #include

    void stringchang(const char*input,char*output)
    {
    for(int i=0;i<255&&input[i]!='\0';i++)
    {
    output[i]=input[i]+1;
    switch(input[i])
    {
    case'z':output[i]='a';break;
    case'Z':output[i]='A';break;
    }

    }

    }
    void main()
    {
    char input[255]={'\0'};
    char output[255]={'\0'};
    gets(input);
    stringchang(input,output);
    puts(output);
    }

    点赞 评论
  • 91program
    91program 2015-09-12 02:55

    你的 output 内存没有清零:你只是赋值了前三个,后面的是随机的数值,所以输出就是乱码。

    点赞 评论
  • SunliyMonkey
    SunliyMonkey 2015-09-12 05:29

    当input[i] = '\0' 时, 你忘记了 output[i] ='\0'

    点赞 评论
  • lm_whales
    lm_whales 2015-09-13 12:45

    其他字符,包括'\0‘都没有处理(原样照抄),这里只做了转换,所以就这样了

    点赞 评论

相关推荐