C语言函数篇(字符串和输入字符值)

课上学的函数怕忘记 先放在这

内存拷贝:

void* mem_cpy(void* dest,const void* src,size_t n)
{
    assert(NULL!=dest && NULL!=src && 0==n);
    //防止src与dest内存块之间有交集
    if(dest>src)
    {
        for(int i=n-1;i>0;i==)
        {
            //以字节为单位拷贝,void指针的进步值是1,void指针不能解引所以要先转换char*在解引用
            *(char*)(dest+i) = *(char*)(src+i);
        }
    }
    else
    {
        for(int i=0;i<n;i++)
        {
            *(char*)(dest+i) = *(char*)(src+i);
        }
    }
}

计算字符串长度:

size_t str_len(const char* str)
{
    assert(NULL != str)
    const char* tmp = str;//让tmp指向字符串的开头
    while(*tmp++);//由于tmp使用的是后加加,此时tmp指向的是‘/0’后面的位置
    return tmp-str-1;
}

字符串拷贝:

char* str_cpy(char* dest,const char* src)
{
    assert(NULL!=dest && NULL!=src);
    char* tmp = dest;//备份dest
    while(*tmp++ = *src++);
    //把字符串src中的每个字符拷贝给dest,把'/0'拷贝过去后while才会结束
    return dest;
    //返回dest方便后续链式调用
}

字符串连接:

char* str_cat(char* dest,const char* src)
{
    assert(NULL!=dest && NULL!=src);
    //备份dest
    char* tmp=dest;
    //让tmp指向dest的'/0'位置
    while(*tmp)tmp++;
    //把字符串src中的每个字符拷贝到dest的末尾,把'/0'拷贝过去口while才会结束
    while(*tmp++ = *src++);
    return dest;
}

字符串比较

int str_cmp(const char* s1,const char*s2)
{
    assert(NULL!=s1 && NULL!=s2);
    //找到s1和s2第一个不相等的字符
    while(*s1 && *s1==*s2) s1++,s2++;
    if(*s1 >*s2)
        return 1;
    if(*s1<*s2)
        return -1;
    return 0;//相等
}

键盘输入值:

typedef enum KeyValue
{
    Key0=48,Key1,Key2,Key3,Key4,Key5,Key6,Key7,Key8,Key9,
    KeyA=65,KeyB,KeyC,KeyD,KeyE,KeyF,KeyG,KeyH,KeyI,KeyH,KeyJ,KeyK,KeyL,KeyM,KeyN,KeyO,KeyP,KeyQ,KeyR,KeyS,KeyT,KeyU,KeyV,KeyW,KeyX,KeyY,KeyZ,
    Keya,Keyb,Keyc,Keyd,Keye,Keyf,Keyg,Keyh,Keyi,Keyj,Keyk,Keyl,Keym,Keyn,Keyo,Keyp,Keyq,Keyr,Keys,Keyt,Keyu,Keyv,Keyw,Keyx,Keyy,Keyz,
    KeyEsc = 27,
    KeySpace = 32,
    KeyUp=183,KeyDown,KeyRight,KeyLeft,
    KeyEnter=10,
    KeyBackspace=127,
    KeyTable=9,
    KeyInsert=294,
    KeyDelete=295,
    KeyHome=190,
    KeyEnd = 188,
    KeyPageUp=297,
    KeyPageDown=298,
}KeyValue

                                                                                                                                             #大师兄

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值