c语言简单函数代码 c语言简单函数代码怎么写( 五 )


int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')
int _tolower(int ch) 返回ch相应的小写字母('a'-'z')
int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')
int _toupper(int ch) 返回ch相应的大写字母('A'-'Z')
帮我写一个简易的strcmp函数(C语言) 。① c的strcmp简洁实现可以是这样的:
int strcmp(const char* s1, const char* s2)
{
while(*s1(*s1==*s2))
s1++,s2++;
return *(const unsigned char*)s1-*(const unsigned char*)s2;
}
② strcmp的返回值可以有3种,即0, =0, 0 (任意一个数值),代表的含义分别是: str1 strcmp用的是二进制比较 , 意思是按字典顺序 , 比如: 字母a字母 b;而aA 。(这是因为a的ascii码是97,而A的是65) 。
理解了这个,上面的代码就好理解了 。while就是s1,s2从头到位一个一个字符的比较 。如果s1为空,或者s1不等于s2,则中断循环 (s1不为空,s2为空,则是*s1 != *s2,退出循环) 。返回值是循环中断时的字符(分别s1和s2对应的位置,*s1-*s2, 如果是上面说的 'a' - 'A', 那么返回的就是97-65=32),那么意味着a在A前面, strcmp0 。
之所以先转换成const unsigned char*再作减法,是由于c的char有三种: char, signed char 和unsigned char 。char就是'a'这样的,而 signed char 则是-127~126之间的数值,而unsigned char则是0~255之间的一个值 。转换成unsigned char就是要“确保” 'a' --- 97 。你要不转换,也是可以的 。
说明一点,很多c的lib实现,比如gnu c, 都是把结果处理成: -1, 0, 1, 而不是这个字符对应的ascii码的差值 。
c语言简单函数代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言简单函数代码怎么写、c语言简单函数代码的信息别忘了在本站进行查找喔 。

推荐阅读