c-language: 库函数

1. 字符串函数

strcpy:字符串复制


char* strcpy(char* dst,const char* src){

    assert(dst!=NULL && src != NULL)

    char* ret = dest;

    while((*dst++=*stc++)!='\0')

        NULL;

    return ret;

}

strncpy:字符串按长度复制

strncpy的功能和strcpy相似,只是它复制时多了一个终止条件。即是未遇到原串的’\0’,如果已经复制了n个字符(n为提供的参数长度),复制同样会终止。


char* strncpy(char* dest, const char* src, int len){

    assert(dest!=NULL && src!=NULL);

    char* address = dest;

    while(len-- && *src!='\0')

        *dest++=*src++;

    *src='\0';

    return address;

}

strcmp:字符串比较


int strcmp(const char* s, const char* t){

    assert(s!=NULL && t!=NULL);

    while(*s && *t && *s==*t){

        ++s;

        ++t;

    }

    return (*s-*t);

}

strncmp


int strncmp(const char* s, const char* t,unsigned int count){

     assert(s!=NULL && t!=NULL);

     while(*s && *t && *s==*t && count--){

         ++s;

         ++t;

     }

     return (*s-*t);

}

strcat:字符串的链连接


char* strcat(char* strDest, const* strSrc){

    assert(strDest!=NULL && strSrc!=NULL);

    char* address=strDest;

    while(*strDest!='\0')

        ++strDest;

    while((*strDest++ = *strSrc++)!='\0')

        NULL;    

    return address;

}

strncat


char* strncat(char* strDest,const char* strSrc, unsigned int count){

     assert(strDest!=NULL && strSrc!=NULL);

     char* address=strDest;

     while(*strDest!='\0')

         ++strDest;

     while(count-- && *strSrc='\0')

         *strDest++ = *strSrc++;

     *strDest='\0';

     return address;

}

strlen: 字符串的长度


int strlen(const char* str){

    assert(str!=NULL)

    int len=0;

    while(*str++!='\0')

        ++len;

    return len;

}

strstr:字符串匹配

找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。


char * strstr (const char * str1,const char * str2){

    char *cp = (char *) str1;

    char *s1, *s2;

    if ( !*str2 )

        return((char *)str1);

    while (*cp){

        s1 = cp;

        s2 = (char *) str2;

        while ( *s1 && *s2 && !(*s1-*s2) )

            s1++, s2++;

        if (!*s2)

            return(cp);

        cp++;

    }    

    return(NULL);

}

atoi:将字符串转换成整型数

atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时(’\0’)才结束转化,并将结果返回(返回转换后的整型数)。


#include <stdio.h> 

#include <assert.h> 

int atoi(const char* str) { 

    int result = 0; 

    int sign = 0;

    assert(str != NULL); // proc whitespace characters 

    while (*str==' ' || *str=='\t' || *str=='\n') 

        ++str; // proc sign character 

    if (*str=='-') { 

        sign = 1; 

        ++str; 

    }

    else if (*str=='+') {

        ++str; 

    } // proc numbers

    while (*str>='0' && *str<='9') { 

        result = result*10 + *str - '0';     

        ++str; 

    } 

     // return result 

    if (sign==1) 

        return -result;

     else

        return result; 

}

itoa:

value:欲转换的数据。string:目标字符串的地址。radix:转换后的进制数,可以是10进制、16进制等


char *itoa(int val, char *buf, unsigned radix) { 

    char *p; 

    char *firstdig; 

    char temp; 

    unsigned digval; 

    p = buf; 

    if(val <0) { 

        *p++ = '-'; 

        val = (unsigned long)(-(long)val); 

    } 

    firstdig = p; 

    do{ 

    digval = (unsigned)(val % radix); 

    val /= radix; 

    if (digval > 9) 

        *p++ = (char)(digval - 10 + 'a'); 

    else 

        *p++ = (char)(digval + '0'); 

    }while(val > 0); 

    *p-- = '\0 '; 

    do{ 

        temp = *p; 

        *p = *firstdig; 

        *firstdig = temp; 

        --p;

        ++firstdig;

    }while(firstdig < p); 

    return buf; 

}

2. 内存函数

memcpy:内存复制


void *memcpy(void *memTo,const void* memFrom,size_t size){

    assert((dst!=NULL)&&(src!=NULL));

    char* tempTo=(char*)memTo; //保持menmTo的首地址

    char* tempSrc=(char*)memSrc;

    while(size-- > 0)

        *tempSrc++=*tempTo++;

    return src;

}

memset: 设置内存值


void *memset(void* buffer,int c,int count){

    assert(src!=NULL)

    char* tempSrc=(char*)src;

    while(count--)

        *tempSrc++=(char)c;

    return src;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值