关于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);
}
为什么输出结果总是会乱码?
图片说明

c

4个回答

修改后的代码:
#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);
}

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问