char* p = str;
if(p != NULL)
{
while(*p != '\0')
{
if('a' <= *p && *p <= 'z')
{
*p = *p - ('a' - 'A');
}
p++;
}
}
这是我们在课本里学到的写法,但在工程中是不能这样做的。因为大小写字母在不同语言中的定义是不一样的,’a’是一个字符常量,它的值在任何时候
都是97,但在不同语言中,97却不一定代表’a’。我们不能简单的认为在97(‘a’)-122(‘z’)之间的字符就是小写字母,而是应该调用标准C函数
islower来判断,同样转换为大写应该调用toupper而不是减去一个常量。
——《系统程序员成长计划》