基于汉语拼音首字母排序的小型姓氏字库

这是一篇关于汉字排序的博客,话不多说直接开始。

//小型简易字库
//根据汉语拼音依次排序
//因汉语中不存在i,u,v开头的汉字,故此本小型字库只有23组汉字,1307个姓氏
//接口需要一个汉字的字符数组首地址(注意:此字符数组长度应为四)
//如果是汉字,则返回对应小写字母的Ascll码值。如果不是,则返回零。
//作者:邱灿飞

#include "funtion.h"

int name_arry(char *comp)
{
    int v,u,flag=0;
    char tmp[4]={0};
    char arr[long_len*3+1]=
    {
        "阿爱艾安奥鳌敖白百里柏班包鲍暴贝贲毕边卞邴伯赏薄卜步出漕采彩财材才蔡菜藏仓苍操曹策彻厕岑层察茶柴虿产镡常昌长苌尝厂敞畅唱钞超晁巢朝潮车撤臣辰陈晨谌程称成丞呈诚承晟乘匙池郗迟叱赤重种崇宠充冲畴丑侴褚储楚处除刍初传钏串闯炊锤春椿纯淳错触刺次慈辞丛从枞爨崔催翠村存寸戴董邓党狄刁丁东方窦杜段笪戴澹台东东门堵督段干鄂尔方风凤房芳鲂封冯丰奉俸酆费付傅富服伏福复符苻浮辅府甫葛高郭耿干官桂古顾苟辜谷管甘宫弓龚巩盖韩何华花郝黄和郇胡霍杭洪滑惠侯怀扈宦衡弘阚后红桓赫连皇甫盍函呼延荤亥闳禾化哈宏海黑呼虎回贺汗罕邗斛浑汉辉候撖寒函井邯郸合江姜蒋金焦贾经及计纪姬吉嵇汲井荆季冀揭静孔康柯匡寇阚况空夔隗蒯亢旷开克库卡可凯考奎郐科苦看堀宽魁肯客蒉口坎夸快葵抗昆阔扣坤叩蔻喀堪寇轲勘矿坑枯课靠伉寇哭桧逵廓闞侃剌来莱赖兰蓝览狼郎浪牢劳老勒雷累垒类犴冷黎离刕丽礼理里李利栗厉励立丽郦力荔非栎阳连廉练良凉梁谅聊蓼廖列林临麟蔺遴凌灵伶令狐令刘留柳龙隆娄楼漏卢蒲鲁鹿路露潞录禄陆栾伦论罗骆落闾吕旅虑略马孟毛莫麦苗梅牟闵穆蒙缪米茅满麻明慕门糜木牧母买茆么冒沐密美卯玛梦某敏黑弥弭繆堂莽曼默民咪牡妙幕勉闽名庙妹枚谬摩祃迈茂忙芒睦貌姆鸣目漫万俟杩闷末峁们猫没贸邙馬卖模每咩暮猛矛倪牛聂宁农南钮那能乜佴尼年娜纳念努赧甯粘侬乃娘闹内诺泥铙妮你奈奴楠曩纽怒拿囊脑喃鸟讷聶弄辇挪男难妞女呢浓耐碾伲扭柰糯孽瑙奶淖凝耨哪恼霓燃捏臬嫩坭匿孥逆陧睨呐杻欧区偶殴藕鸥瓯噢沤讴耦呕彭潘庞裴蒲朴普浦平皮逄蓬盘泮帕朋濮瓮排骈攀邳盆鹏培溥品庞怕飘批跑胖偏澎苹牌莆坡爬坪葡扑迫仆颇派棚粕泡萍旁泮沛佩铺盼破配票评璞疋捧凭漂尨畔炮菩拍郫乒贫磐叛篇瓢剖瓮蟠胚喷裨戚漆期齐祁歧奇旗骐綦杞千阡牵谦钱虔潜黔强桥乔谯钦琴秦勤覃卿青清庆秋邱仇裘糗屈取曲全泉权阙任饶冉阮茹芮容融戎荣汝仁人热日瑞若如让闰肉染绕柔肜壬润茸然惹绒软壤入褥认蓉锐忍荏娆苒儒榕韧冗仍弱濡扰刃偌纫髯乳苜嵘熔便溽蚋初喏蛆都肽攘妊扔茂狨孙宋苏沈石史邵施尚单舒时司沙隋商师桑佘索水松寿帅宿双粟韶殳慎厍莘上斯赏上税侍赛生萨司随眭市三折思圣锁睢撒闪绳森申胜四陕树神所叔绍疏莎侣是善伞省舍顺社拾杉释散邵参淑唐田谭陶汤涂童滕谈佟屠邰仝通腾檀铁台庹太同塔图天潭土涂妥藤泰特脱钭帖托吐提他徒投澹庭桃拖团题吞淘它套桶添沓堂滕塘头倘笆佗細体贴桐郯涛屯筒坦她榻坛推彤驼婷铜梯町途榻肽兔王吴魏王韦武伍万温文翁卫邬巫危闻乌蔚尉毋沃位宛未仵无望吾伟问瓦威巍维物委汶兀晚外务尾丸弯午卧哇为人雯梧碗窝唯微网湾枉稳吳我娃慰挖任皖忘歪屋忤苇溫往罔窪误鄔玩婉玮徐谢许肖夏熊薛萧向邢辛冼解项席宣奚胥西习郗相荀修幸鲜须信轩刑玄小续忻先晓雪新香县寻秀线吁喜星兴校袭乡贤仙呷希徐孝学下欣锡绪旭雄洗息旋顼葸羡缐姓效筱郤心杏昔细溪笑偰宪祥邢严阎殷易颜岳顏俞游尤喻应阳晏郁虞伊燕原禹云苑仰鄢羊元衣雍於岩阴养玉羿益越由银冶宇庾尧延鱼扬依英永要亚言央员仪恽负印运远义焉弋牙野勇雅拥宜彦犹矣遇月院营艳奕乙裔业宴有油攸约蚁悦张赵朱郑曾钟邹庄翟章祝左詹占卓臧甄仲植诸宗祖支湛訾昝竺战锺子终宰智扎展正自字泽招竹中资佐职仉褚郅禚肇志镇衷俎者主政增珠真征传紫诸照只早壮迮知忠掌茌颛皱邾莊则钊糟治赞兆芷"
    };

    for(v=0;v<long_len;v++)
    {
        for(u=0;u<3;u++)
        {
            tmp[u]=arr[v*3+u];
        }
        if(strcmp(comp,tmp) == 0)
        {
            flag++;
            break;
        }
    }
    if(flag == 1)
    {
        if(v<7)
        {
            return 'a';
        }
        else if(v>=7 && v<26)
        {
            return 'b';
        }
        else if(v>=26 && v<130)
        {
            return 'c';
        }
        else if(v>=130 && v<153)
        {
            return 'd';
        }
        else if(v>=153 && v<155)
        {
            return 'e';
        }
        else if(v>=155 && v<181)
        {
            return 'f';
        }
        else if(v>=181 && v<200)
        {
            return 'g';
        }
        else if(v>=200 && v<260)
        {
            return 'h';
        }
        else if(v>=260 && v<280)
        {
            return 'j';
        }
        else if(v>=280 && v<341)
        {
            return 'k';
        }
        else if(v>=341 && v<432)
        {
            return 'l';
        }
        else if(v>=432 && v<518)
        {
            return 'm';
        }
        else if(v>=518 && v<597)
        {
            return 'n';
        }
        else if(v>=597 && v<609)
        {
            return 'o';
        }
        else if(v>=609 && v<693)
        {
            return 'p';
        }
        else if(v>=693 && v<737)
        {
            return 'q';
        }
        else if(v>=737 && v<808)
        {
            return 'r';
        }
        else if(v>=808 && v<889)
        {
            return 's';
        }
        else if(v>=889 && v<972)
        {
            return 't';
        }
        else if(v>=972 && v<1052)
        {
            return 'w';
        }
        else if(v>=1052 && v<1136)
        {
            return 'x';
        }
        else if(v>=1136 && v<1223)
        {
            return 'y';
        }
        else if(v>=1223 && v<1307)
        {
            return 'z';
        }
    }
    else
    {
        return 0;
    }

在学校写通讯录系统的时候,有一个功能是联系人首字母排序。关于中文首字母排序的字库在网上实在找不到,有很多链接点进去就要收钱,所以我就自己写了一个中文姓氏首字母排序的字库。当然也不是什么技术高深的活,就是四个字“力大砖飞”。首先找一个中国姓氏大全的网址,用截图识字的功能截取常用的姓氏,再根据首字母排序,记录首字母的区间,再就是一个个找字库中是否含有传入的姓氏。

对于我这种没天赋的人来说,写代码和搬砖真没有区别。

--------------------------------------------------------分割线----------------------------------------------------------------过了好久了,有读到这里的吗?

如果有用了这个程序的小伙伴可以评论一下,体验怎么样之类的,有什么问题都可以交流交流。

2023.12.8

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值