您的位置首页>企业动态>

linux下strncasecmp的实现

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux下strncasecmp的实现问题。看来strcpy的实现真的太低了,腾讯的笔试串知识考察

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解linux下strncasecmp的实现问题。

看来strcpy的实现真的太低了,腾讯的笔试串知识考察也变了。Linux下不区分大小写的字符串比较函数的原型:int strnchecmp(const char * S1,constchar * S2,register size _ t n);返回值:如果相等,则返回0,如果s1s2,则返回正整数,如果s1s2,则返回负整数static const无符号charmap []={'\ 000 ',' \ 001 ',' \ 002 ',' \ 003 ',' \ 004 ',' \ 005 ',' \ 005 '。011', '\012', '\013', '\014', '\015', '\016', '\017','\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027','\030', '\031', '\032', '\033', '\ 034', '\035', '\036', '\037','\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047','\050', '\051', '\052', '\053', '\054', '\055', '\056', '\ 057','\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067','\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077','\100', '\141', '\ 142', '\143', '\144', '\145', '\146', '\147','\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157','\160', '\161', '\162', '\163', '\164', '\ 165', '\166', '\167','\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137','\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147','\ 150', '\151', '\152', '\153', '\154', '\155', '\156', '\157','\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167','\170', '\171', '\172', '\ 173', '\174', '\175', '\176', '\177','\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207','\210', '\211', '\212', '\213', '\214', '\215', '\ 216', '\217','\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227','\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237','\240', '\ 241', '\242', '\243', '\244', '\245', '\246', '\247','\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257','\260', '\261', '\262', '\263', '\ 264', '\265', '\266', '\267','\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277','\300', '\341', '\342', '\343', '\344', '\345', '\346', '\ 347','\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357','\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367','\370', '\371', '\ 372', '\333', '\334', '\335', '\336', '\337','\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347','\350', '\351', '\352', '\353', '\354', '\ 355', '\356', '\357','\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367','\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',}; int strncasecmp(const char *s1,const char *s2,register size _ t n){ register unsigned char u1,U2;for(;n!=0;- n){u1=(无符号字符)* s1u2=(无符号字符)* s2if (charmap[u1]!=char map[U2]){ return char map[u1]-char map[U2];} if(u1==' \ 0 '){ return 0;} }返回0;}这里的charmap数组下标对应ASCII的十进制值,数组值对应ASCII的八进制值。同时只要注意到从\141开始会有重复,是的,重复A-Z的八进制值就是A-Z,这样就可以忽略大小写进行比较。这段代码的实现取自linux的strncasecmp.c文件。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。