问题描述
- 关于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]=='')
break;
}}
void main()
{
char input[255];
char output[255];
gets(input);
stringchang(input,output);
puts(output);
}
为什么输出结果总是会乱码?
解决方案
修改后的代码:
#include
void stringchang(const char*input,char*output)
{
for(int i=0;i<255&&input[i]!='';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]={''};
char output[255]={''};
gets(input);
stringchang(input,output);
puts(output);
}
解决方案二:
当input[i] = '' 时, 你忘记了 output[i] =''
解决方案三:
其他字符,包括'‘都没有处理(原样照抄),这里只做了转换,所以就这样了
解决方案四:
[C语言]字符串的各种问题
c语言中的字符串问题
关于c语言中的字符串的问题
解决方案五:
你的 output 内存没有清零:你只是赋值了前三个,后面的是随机的数值,所以输出就是乱码。
时间: 2024-09-14 15:00:11