字母大小写转换时为什么遇到空格时就会中断,应该怎么解决啊?求大神解答

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char ch[100];
int i,l;
printf("本软件用于字母、单词、英语句子的大小写转换(大写变小写,小写变大写),请输入您要转换的字母、单词或英文句子(加上空格等字符共计不超过100字符):\n");
scanf("%s",ch);
printf("\n");
l=sizeof(ch);
for(i=0;i<l;i++)
{
if((ch[i]>='A')&&(ch[i]<='Z'))
{
ch[i]=ch[i]+32;
}
else if(ch[i]>='a'&&ch[i]<='z')
{
ch[i]=ch[i]-32;
}
}
printf("转换后的结果为:%s\n",ch);
system("pause");
}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char ch[100];
int i,l;
printf("本软件用于字母、单词、英语句子的大小写转换(大写变小写,小写变大写),请输入您要转换的字母、单词或英文句子(加上空格等字符共计不超过100字符):\n");
gets(ch);       //用gets函数就可以避免空格干扰
printf("\n");
l=strlen(ch);  //sizeof()是计算这个数组一共占了多少内存 而不是字符串的长度
for(i=0;i<l;i++)
{
if((ch[i]>='A')&&(ch[i]<='Z'))
{
ch[i]=ch[i]+32;
}
else if(ch[i]>='a'&&ch[i]<='z')
{
ch[i]=ch[i]-32;
}
}
printf("转换后的结果为:%s\n",ch);
system("pause");
}
改了两处 调试完了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-02
应该是strlen不是sizeof
sizeof得到的是定制200(也可能是400,反正与输入无关,是你的数组大小)
相似回答