c-language: 库函数

来源:互联网 发布:淘宝的无印良品都是假 编辑:程序博客网 时间:2024/06/05 10:03

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;}
0 0
原创粉丝点击