关于C语言字符串Dddi DdD的一些问题处理

关于C语言字符串Dddi DdD如何让其中大写字母变小写并且中间的空格删除的问题
这是我写的代码:
#include<stdio.h>
#include<string.h>


int main()
{
char s[] = "Dddi DdD";
int len = sizeof(s) - 1;
int i;
for (i = 0; i < len; i++)
{
if (s[i] >= 'A'&&s[i] <= 'Z')
{
s[i] + 32;
}
}
for (i = 0; i < len; i++)
{
if (s[i] == '\0')


{
strcpy(&s[i], &s[i + 1]);
len--;
}
}


printf("%s", s);
return 0;
}


可是VS调试的时候没有达到效果。求解?

回答:


第一:大写转化成小写的式子写错了,不是s[i] + 32,而是s[i] + = 32
第二:判断是否为空格的条件错了,'\0'表示的是换行符,空格直接打空格' '就好了,或者写成:if(s[i]==32)也行。(空格的ascii码是32)


if (s[i] >= 'A'&&s[i] <= 'Z')
{
s[i]  = s[i] + 32;
}
if (s[i] == ' ')
{
strcpy(&s[i], &s[i + 1]);
len--;
}
可以试试这么改。 

#include<stdio.h>


int main()
{
char *string="Dddi DdD";
char str[10];
int i,j;
int n;
n=strlen(string);

/*第一个for循环将大写字母变为
**小写,第二个for循环去掉字符串
**中的空格 
*/
for(i=0;i<n+1;i++)
{
if(*(string+i)<=90&&*(string+i)>=65)//如果是大写字母则转换为小写 
{
str[i]=*(string+i)+32;
}
else//其他的直接赋值 
{
str[i]=*(string+i);
}
}

for(i=0;i<n+1;i++)
{
if(str[i]==' ')//若是空格则将空格后 
{
for(j=i;j<n+1;j++)// 的每一位移到前一位
{
str[j]=str[j+1];
}
}
} 
printf("%s\n",str);
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值