/*change the case of each alphabet in this String. */
#include <stdio.h>
#include<string.h>
int main()
{
char a[100],b,c;
int i;
scanf("%s",a);
int len=strlen(a);
for(i=0;i<len;i++)
{ c=a[i];
b='c';
if(b<91)
b=b+32;
else if(b>96)
b=b-32;
'c'=b; /*error*/
a[i]=c;
}
printf("%s",a);
return 0;
}
我想将string的每个变量更改为相应的大写或小写(例如input:adsE 输出:ADSe) 所以我通过改变变量的ASCII值来尝试它, 但我无法将新的ASCII值放回原始变量。 我应该怎么做?
答案 0 :(得分:1)
如果你
#include <ctype.h>
然后您可以使用toupper()
或tolower()
函数将字符转换为大写/小写。您也可以使用isupper()
和islower()
来测试案例。
例如:
if (islower(ch)) ch = toupper(ch);
else if (isupper(ch)) ch = tolower(ch);
答案 1 :(得分:1)
首先,变量c
和字符'c'
无关。您可以分配c
c = 'a'
,但无法分配到'c'
- 就像您无法分配给某个号码一样,例如9 = 42
会失败。
但是,不需要使用变量b
和c
。您只需直接在a
上操作即可。像
if (a[i] < 91)
a[i] = a[i] + 32;
else if (a[i] > 94) // Hmm, should this be 96?
a[i] = a[i] - 32;
您可以改进代码,如:
if ((a[i] >= 'A') && (a[i] <= 'Z'))
a[i] = a[i] + 32;
else if ((a[i] >= 'a') && (a[i] <= 'z'))
a[i] = a[i] - 32;