c语言编程:字符串中大小写字母转换

2024-11-08 01:38:01
推荐回答(4个)
回答(1):

思路:利用对应大小写字符的ASCII码相差32,则遍历输入的字符串,判断每个字符是大写字母还是小写字母,如果是大写字母则自加32就是对应的小写字母,如果是小写字母则自减32就是其对应的大写字母。

参考代码:

#include 
int main()
{
char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')//表示是大写字母 
a[i]+=32;
else if(a[i]>='a'&&a[i]<='z')//表示是小写字母 
a[i]-=32;
puts(a);
    return 0;

 /*
输出:
asfDJY435
ASFdjy435
 */

回答(2):

#include
#include
main()
{
char a[100];
gets(a);
strlwr(a);/*将字符串中大写字母转化为小写字母*/
puts(a);
strupr(a);/*将字符串中的小写字母转化为大写字母*/
puts(a);
}

回答(3):

下面的代码演示了如何把字符串转换为全部大写、全部小写:

#include
#include
#include
#include
// 把字符串转换为小写
char* str2lower(char *str)
{
char *p = str;
while (*str){
*str = tolower(*str);
str++;
}
return p;
}

// 把字符串转换为大写
char* str2upper(char *str)
{
char *p = str;
while (*str){
*str = toupper(*str);
str++;
}
return p;
}

/* 使用方法:
* command [A|a] string
* 参数说明:
* string是要转换的字符串
* [A|a]表示将字符串string转化为大写还是小写
*/
int main(int argc, char *argv[])
{
if (argc != 3 || strlen(argv[1]) != 1){
printf("usage: command [A|a] string\n");
return EXIT_FAILURE;
}

if (isupper(argv[1][0]))
printf("字符串的大写是:%s\n", str2upper(argv[2]));
else if (islower(argv[1][0]))
printf("字符串的小写是:%s\n", str2lower(argv[2]));
else
printf("原始的字符串是:%s\n", argv[2]);

return EXIT_SUCCESS;
}

编译该代码并运行,结果如下:

[287@~/c-cpp]$ gcc --std=c99 -o string-in-case string-in-case.c
[288@~/c-cpp]$ ./string-in-case A "This is a String."
字符串的大写是:THIS IS A STRING.
[289@~/c-cpp]$ ./string-in-case a "This is a String."
字符串的小写是:this is a string.

回答(4):

大小写字母对应的ASCII码值不同,大写的在65—90之间,小写在97—122之间,同一字母的大小写相差32。根据这就很容易实现转换了。