千家信息网

C语言常用的库函数怎么使用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"C语言常用的库函数怎么使用",在日常操作中,相信很多人在C语言常用的库函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言常用的库函数怎么
千家信息网最后更新 2025年01月19日C语言常用的库函数怎么使用

这篇文章主要介绍"C语言常用的库函数怎么使用",在日常操作中,相信很多人在C语言常用的库函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C语言常用的库函数怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.strlen

字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。

函数的模拟实现

1.计数法

int my_strlen(dest){int count=0;    while(dest)//当dest等于'\0'时停止循环{    count++;    dest++;}return count;}

2.递归法

int my_strlen(char* dest){    int count=0;    if(*dest!='0')    {        dest++;        count++;        return my_strlen(dest,count)    }    else    return count;}

3.指针减指针

int my_strlen(char* dest){    char* arr=dest;//定义一个新指针指向dest    while(*arr)//直到arr指向'\0'    {    arr++;    }    return (arr)-(dest);//指针相减代表两个指针之间的元素个数}

2.strcpy

char* strcpy ( char * destination , const char * source )

会将源字符串中的 '\0' 拷贝到目标空间。

目标空间必须足够大,并且可变以确保能存放源字符串。

函数的模拟实现

char* my_strcpy(char* dest, const char* str){        char* arr1 = dest;        while ((*dest++ = *str++)!='\0')        {                ;        }        return arr1;}int main(){        char arr1[] = "***************";        char arr2[] = "hello word";        my_strcpy(arr1, arr2);        printf("%s", arr1);        return 0;}

3.strcmp

int strcmp ( const char * str1, const char * str2 );

第一个字符串大于第二个字符串,则返回大于0的数字

第一个字符串等于第二个字符串,则返回0

第一个字符串小于第二个字符串,则返回小于0的数字

函数的模拟实现

int my_strcmp(char* arr1,char* arr2){        while(*arr1 == *arr2)        {                if (*arr1 == '\0' && *arr2 == '\0')                {                        return 0;                }                else                {                        arr1++; arr2++;                 }        }if (*arr1 > *arr2)        {                return 1;        }        else if (*arr1 < *arr2)        {                 return -1;        }}

4.strcat

char * strcat ( char * destination, const char * source );

函数的模拟实现

char* my_strcat(char* dest, char* str){        char* ret = dest;        while (*dest)        {                dest++;        }        while (*dest++=*str++)        {                ;        }        return ret;}int main(){        char arr1[50] = "hello";        char arr2[] = "word";        char* count=my_strcat(arr1, arr2);        printf("%s", count);        return 0;}

5.strstr

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

函数的模拟实现

char* my_strstr(char* dest, char* str){        char* arr1 = str;        char* cur = dest;        while (*cur)        {                str = arr1;                dest = cur;                if (*dest != *str)                {                        dest++;                        str++;                }                else if (*dest == *str)                {                        while (*dest == *str)                        {                                dest++; str++;                         }if (*str == '\0')                        {                                return cur;                        }                }                cur++;        }return NULL;}int main(){        char arr1[] = "abbbcdef";        char arr2[] = "bbc";        char* ret=my_strstr(arr1, arr2);        if (NULL == ret)        {                printf("找不到子串\n");        }        else        {                printf("%s\n", ret);        }        return 0;}

6.strtok

char * strtok ( char * str, const char * sep );

strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。

strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记

int main(){        char buff[] = "www.aaabbbccc@qq.com";        char buf[20] = { 0 };        strcpy(buf, buff);        char* sep=".@";        char* str = NULL;        for (str = strtok(buf, sep); str != NULL; str = strtok(NULL, sep))                        {//NULL是从保存好的位置开始往后找                                printf("%s\n", str);                        }        return 0;}

7.字符分类函数

iscntrl任何控制字符
isspace空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v'
isdigit十进制数字 0~9
isxdigit十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F
islower小写字母a~z
isupper大写字母A~Z
isalpha字母a~z或A~Z
isalnum字母或者数字,a~z,A~Z,0~9
ispunct标点符号,任何不属于数字或者字母的图形字符(可打印)
isgraph

任何图形字符

isprint任何可打印字符,包括图形字符和空白字符

8.memcpy&memmove

void * memcpy ( void * destination , const void * source , size_t num )

函数模拟实现

void* my_memmove(void* dest,void* str , size_t count){        void* ch = dest;        if (dest > str)        {                while (count--)                {                        *((char*)dest + count) = *((char*)str + count);                }        }        else        {                while (count--)                {                        *(char*)dest = *(char*)str;                        dest=(char*)dest+1;                        str=(char*)str+1;                }        }}int main(){        int arr1[10] = {1,2,3,4,5,6,7,8,9,10};        my_memmove(arr1+2, arr1 , 20);        int sz = sizeof(arr1) / sizeof(arr1[0]);        for (int i = 0; i < sz; i++)        {                printf("%d", arr1[i]);        }        return 0;}

9.memcmp

int memcmp ( const void * ptr1 , const void * ptr2 , size_t num );

函数模拟实现

void* my_memcmp(char* arr, char* arr1, int count){        while (count--)        {                if (*(char*)arr > *(char*)arr1)                {                        return 1;                }                else if ((*(char*)arr < *(char*)arr1))                {                        return -1;                }                arr++; arr1++;        }       return 0;}int main(){        int arr[] = { 1,2,3,4,5 };        int arr1[] = { 1,2,3,4,4 };        int ret=my_memcmp(arr, arr1, 20);        printf("%d", ret);        return 0;}

到此,关于"C语言常用的库函数怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0