C语言问题,为什么结果输出之后还有一堆乱码

来源:百度知道 编辑:UC知道 时间:2024/05/02 20:32:56
将字符串中的小写的字母改为小写,结果是输出了,可是结果后面还有一堆乱码?高手帮忙解释一下
#include<stdio.h>
#include<string.h>
#define N 40
void main()
{
char str1[N],str2[N],str3[N];
int i=0,j=0;
printf("input string: ");
gets(str1);
for(i=0;i<=strlen(str1);i++)
{
if(str1[i]>='A' && str1[i]<='Z')
str2[i]=str1[i];
else
str2[i]=str1[i]-32;
}
printf("%s\n",str2);
}

你的加上字符串结束符啊str2[i-1]='\0'; 还有你要只要i<strlen;不要i<=strlen

#include<stdio.h>
#include<string.h>
#define N 40
void main()
{
char str1[N],str2[N],str3[N];
int i=0,j=0;
printf("input string: ");
gets(str1);
for(i=0;i<strlen(str1);i++)
{
if(str1[i]>='A' && str1[i]<='Z')
str2[i]=str1[i];
else
str2[i]=str1[i]-32;
}

str2[i]='\0';
printf("%s\n",str2);
}