C语言字符大小写怎么转换?

如题所述

第1个回答  2018-03-19

#include "stdio.h"

#include "string.h"

void inv(char *s)

{

int i;

for(i=1;i<=strlen(s);i++)

{

if(*(s+i)>=65 && *(s+i)<=92)

*(s+i)+=32;

else if (*(s+i)>=97 && *(s+i)<=122)

*(s+i)-=32;

}

}

void main()

{

char *string;

gets(string);

inv(*string);

puts(string);

}

本回答被网友采纳
第2个回答  2018-02-02
#include<stdio.h>
#include<string.h>
char a(char b[10])
{char c;
int i;
for(i=0;i<10;i++)
{
if(b[i]>='a' && b[i]<'A') //判断b[i]>'a' <'A'?
c=b[i]+32; //怎么都是加32,没有减的?
if(b[i]>='A' && b[i]<='Z') //即使上面都对了,把小写转换成大写了,在这句又会把大写转换成小写,应该用else if
c=b[i]+32; //怎么都是加32,没有减的?
return c;
}
}

main() //习惯不好,最好用int main(void) 原因以后学到再说
{char s[10]; //定义最大字符串长度,但get(s)输入的字符串长度不一定为10啊,所以你循环一直用10是不正确的
char c;
int i;
char a(char b[10]); //从这里看出你的子函数处理的是一个字符串,但下面你对这个字符串处理10次想干嘛?
gets(s); //想一个字符一个字符的处理就应该定义为char a(char b);
for(i=0;i<10;i++)
{
c=a(s); //c一个字符,a(s)处理的是一个字符串,处理一个字符串返回一个字符???
printf("%c",c);
}
}

修改版:
#include<stdio.h>
#include<string.h>
char a(char b)
{
if(b>='a' && b<='z')
{
b=b-32;
}

else if(b>='A' && b<='Z')
{
b=b+32;
}

return b;
}

int main(void)
{
char a(char b);

char s[10];
char c;
int i;

gets(s);
for(i=0;i<strlen(s);i++)
{
c=a(s[i]);
printf("%c",c);
}

return 0;
}
相似回答