如何实现从小写字母变成大写字母?
main()
{
char c1,c2;
printf("Input a letter\n");
scanf("%c",&c1);
c2=('a'<=c1&&c1<='z')?(c1-'a'+'A'):c1;
printf("%c",c2);
getch();
return 0;
}
(c1-'a'+'A')怎么解释这句?为什么这个表达式实现了小写字母到大写字母的转换?不太懂
main()
{
char c1,c2;
printf("Input a letter\n");
scanf("%c",&c1);
c2=('a'<=c1&&c1<='z')?(c1-'a'+'A'):c1;
printf("%c",c2);
getch();
return 0;
}
(c1-'a'+'A')怎么解释这句?为什么这个表达式实现了小写字母到大写字母的转换?不太懂
'a'-'A'=32
小写和大写字母的差值是32.
所以你可以这样理解
c1-('a'-'A')==c1-32;
ASCII 好搞
#include <ctype.h>
toupper() 接受一个 char 参数,返回一个 char 值。
如果参数是小写字母,则返回相应的大小字母,否则返回原值。
//----------------------------------------------//
// 自己写函数 //
//------------//
char toup_a(char c)
{
if(c < 'a' || c > 'z')
return c;
return ('A' + c - 'a');
}
char toup_b(char c)
{
if(c < 'a' || c > 'z')
return c;
return (c - 32);
}
[此贴子已经被作者于2007-11-15 10:12:41编辑过]