这是我写的代码:
#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调试的时候没有达到效果。求解?
回答:
第二:判断是否为空格的条件错了,'\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); }原文链接:https://www.f2er.com/javaschema/283692.html