精华内容
下载资源
问答
  • c语言标准库函数源码

    2017-04-09 09:11:05
    c语言标准库函数源码
  • C语言标准库函数源码,包含所有的基本函数比如常见的stdio string convert stdlib filesystem 库,包含函数fseek fwrite input setbuf _file等常用函数
  • C语言标准库函数源码大全(24M涵盖所有库函数) ,相当全的库函数源码! 如标准 printf scanf 字符类处理等,各种源码库函数,是学习C语言,精通C语言的必备良药!平时项目参考相当给力!(GLIBC源码)
  • 可以查询c语言标准库函数,里面包含经典c语言程序代码,如:推箱子,扫雷游戏,俄罗斯方块等10个代码!
  • C语言ISO标准库函数源码, 这是世界的标准, 你值得拥有
  • c语言标准源码大全

    2017-03-05 18:57:46
    C语言标准库函数源码大全,相当全的库函数源码,各种源码库函数,是学习C语言,精通C语言的资料工具,望能帮助大家学习c语言.
  • C语言库函数源码大全

    热门讨论 2007-12-26 20:00:28
    C语言库函数源代码包,包含上千个C函数,标准库的源代码.程序员必备的不可多得的好资源!
  • C语言标准函数库源码

    2018-09-20 15:40:16
    C语言标准库函数源码大全(24M涵盖所有库函数) ,相当全的库函数源码! 如标准 io ,字符类处理等,各种源码库函数,是学习C语言,精通C语言的必备良药!平时项目参考相当给力!
  • c语言库函数的实现,对于深入理解c和良好的编程风格的养成大有裨益
  • 这个是2019年8月份的稳定版的C语言标准源码,其中包含常见的字符串函数,数学函数。是了解C语言标准库必备的,阅读源码有利于更好的了解标准库函数的实现原理
  • 这里是C语言常用标准库函数源码的库,例如包括printf,sprintf,scanf,sscanf等函数实现的源码。源码的形式主要是.c,名称是大写,例如PRINTF.c,库的组织形式是很清晰的。
  • libft单元测试 libft-unit-test是用于42的libft项目的完整测试套件,可让您测试lib,跟踪进度并对lib进行基准测试(使用系统的libc或其他lib) 安装 您必须具有以下文件结构: . |- libft/ |- libft-unit-tests/ ...
  • 允许使用C语言标准功能: 写(man 2写) va_start(男人3 va_start) va_end(男人3 va_end) va_arg(男人3 va_arg) 汇编 我们的代码是这样编译的: $ gcc -Wall -Werror -Wextra -pedantic *.c 我们所有的...
  • C语言大全第4版+源码 http://down.qiannao.com/space/file/yuexingchen2/-4e0a-4f20-5206-4eab/C-002b-002b-0020-0020-00b7C-0020-0020vc/C-8bed-8a00-5927-5168-7b2c4-7248-002b-6e90-7801-0020.rar/.page C语言...
  • 王牌1+C语言标准库函数查询手册 王牌2+C语言常用查询手册 王牌3+C源码大放送 王牌4+学习成果检测 王牌5+C程序员职业规划 王牌6+全国计算机等级考试二级C考试大纲及应试技巧 王牌7+C程序员面试技巧 王牌8+C常见面试题...
  • 部分库函数的自我实现

    万次阅读 2017-09-04 16:24:52
    部分库函数的自我实现 库函数分类:strcpy、strlen、strcmp、...1、strcpy:strcpy是一种C语言标准库函数,strcpy把从ps地址开始且含有’\0’结束符的字符串复制到以pd开始的地址空间,返回值的类型为char*。 ...

    部分库函数的自我实现

    库函数分类:strcpy、strlen、strcmp、strcat、strstr、memcpy、memmove以上几种为常见的库函数,今天我们将用自己的理解来实现这些函数。

    实现函数源码如下:

    1、strcpy:strcpy是一种C语言的标准库函数,strcpy把从ps地址开始且含有’\0’结束符的字符串复制到以pd开始的地址空间,返回值的类型为char*。

    char*my_ strcpy(char* pd, const char* ps)
    {
        assert(pd != NULL);
        assert(ps != NULL);
        char* ret = pd;
        while ((*pd++ = *ps++) != '\0')
        {
            ;
        }
        return ret;
    }

    2、strlen:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。

    int my_strlen(char*str)//非递归
    {
     assert(str);
     int count = 0;
     while (*str!='\0')
     {
      count++;
      str++;
     }
     return count;
    }
    
    
    int my_strlen1(char*str)//递归
    {
     assert(str);
     if (*str == '\0')
     {
      return 0;
     }
     return my_strlen1(str + 1) + 1;
    }

    3、strcmp:strcmp比较两个字符串设这两个字符串为str1,str2若str1==str2,则返回零;若str1 >str2,则返回负数;若str1>str2,则返回正数。

    int my_strcmp( char* arr,  char* str)  
    {  
        assert(arr);  
        assert(str);  
        while (*arr == *str)  
        {  
            if (*arr=='\0'||*str=='\0')  
            {  
                return 0;  
            }  
            arr++;  
            str++;  
        }  
        return *arr - *str;  
    }  

    4、strcat:strcat将两个字符串连接在一起

    char *my_strcat(char *str1, char *str2)
    {
        assert(str1 != NULL);
        assert(str2 != NULL);
        char *pt = str1;
        while (*str1 != '\0')
        {
            str1++;
        }
        while ((*str1++ = *str2++) !='\0')
        {
    
        }
            return pt;
    }

    5、strstr:strstr 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

    char *my_strstr(const char *str1, const char *str2)
    {
            assert(str1);
            assert(str2);
        char *p1 = NULL;
        char *p2 = NULL;
        char *ptr = str1;
        while (*ptr)
        {
            p1 = ptr;
            p2 = str2;
            while (*p1 == *p2)
            {
                p1++;
                p2++;
                if (*p2 == '\0')
                {
                    return ptr;
                }
            }
            ptr++;
        }
        return NULL;
    }

    6、memcpy:memcpy内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

    void * my_memcpy(void * dst, const void * src, int count)  
    {  
        void *ret = dst;  
        while (count--)  
        {  
            *(char *)dst = *(char *)src;  
            dst=(char *)dst+1;  
            src=(char *)src+1;  
        }  
        return ret;  
    }  

    7、memmove:memmove函数用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。

    void* my_memmove(void* dest, void* src, size_t n)  
    {  
        void* ret = dest;  
        char* str1 = (char*)dest;  
        char* str2 = (char*)src;  
        assert(dest);  
        assert(src);  
        if (str1 > str2)  
        {  
            while (n--)  
            {  
                *(str1 + n) = *(str2 + n);  
            }  
        }  
        else  
        {  
            while (n--)  
            {  
                *str1++ = *str2++;  
            }  
        }  
        return ret;  
    }  

    总结:库函数的自我实现还是比较简单的,有兴趣的朋友可以去看一下C语言标准库是如何写的。在标准库有些函数并没有设计返回值而我们自我实现时候加上了,是为了实现“链式访问”。

    附库函数源码和使用注意事项

    展开全文
  • C语言从入门到精通

    2016-02-19 15:16:09
    第5篇【王牌资源】在DVD光盘中赠送了丰富的资源,诸如C语言标准库函数查询手册、C语言常用查询手册、C源码大放送、《C语言从入门到精通》【练一练】答案、C程序员职业规划、全国计算机等级考试二级C考试大纲及应试...
  • #目标 为什么C编程很棒 ###谁发明了C ###谁是Dennis Ritchie,Brian Kernighan和Linus Torvalds ###键入gcc main.c时会...###使用标准库函数时如何找到要包含在源代码中的正确标题 ### main函数如何影响程序的返回值
  • 本书是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。 本书结合C标准的相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,这正是一个真正的C程序员所必须掌握的。更...
  • string.h中包含了所有的字符串处理函数,也包含了内存处理函数,因为这些内存处理函数(如比如、复制、搜索)的功能与字符串处理函数功能类似。... string.h中包含的标准库函数:strcat,strncat,strc

        string.h中包含了所有的字符串处理函数,也包含了内存处理函数,因为这些内存处理函数(如比如、复制、搜索)的功能与字符串处理函数功能类似。我们是用通用指针来指向内存块的,通用指针可以用char*类型(传统C语言),也可以用void*类型(标准C语言)。每个函数都有对应的宽字符版本,在wchar.h中。
        string.h中包含的标准库函数:strcat,strncat,strcmp,strncmp,strcpy,strncpy,strlen,strchr,strrchr,strspn,strcspn,strpbrk, strstr,strok,strcoll,strxfrm,strerror; memcpy,memmove,memcmp,memchr,memeset。GNU还提供了很多非标准的扩展,如memccpy,rawmemchr,memrchr, strdup,strndup等。


        1、字符串连接strcat,strncat,wcscat,wcsncat:将字符串src(或其前n个字符)连接到dest,后面两个是宽字符版本。

        解释:
        (1)strcat基本思想:把指针移到dest的终止符'/0'的前一个位置,然后扫描src的每个字符并连接到dest的后面。
        (2)strncat基本思想:为减少扫描的循环次数以提高效率,对src的每4个字符作为一组来进行连接,让n除以4,计算出循环次数n4。每次循环都要连接4个字符,总共连接了4*n4个字符,最后对剩下的几个字符(最多3个)进行连接。若src的第n个字符不是终止符'/0',则连接的末尾还要补上一个终止符。
        2、字符串比较strcmp,strncmp,wcscmp,wcsncmp:按照字典顺序比较两个字符串(或其前n个字符)的大小。

        解释:
        (1)strcmp基本思想:扫描两个串,并对字符作相等比较,直到不相等时退出循环,返回这两个字符的差值。
        (2)strncmp基本思想:做比较操作,每4个字符作为一组来进行比较,以提高效率。扫描两个串,每次循环时连续比较4个字符,直到比较完前n个字符。

    展开全文
  • C语言标准库函数—strcpy(),字符串拷贝 原型声明:extern char *strcpy(char *dest,const char *src); 头文件:string.h 功能:把从src地址开始且含有‘\0’结束符的字符串赋值到以dest开始的地址空间 说明:src和...

    1. C语言标准库函数—strcpy(),字符串拷贝

    原型声明extern char *strcpy(char *dest,const char *src);

    头文件:string.h

    功能:把从src地址开始且含有‘\0’结束符的字符串赋值到以dest开始的地址空间

    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。strcpy不处理内存域重叠和空间不足的异常,需要程序员在应用此函数时,自己保障。

    char* strcpy(char* DestStr,constchar*SrcStr)   //源字符串标明为const

    {

           assert(( DestStr != NULL)&&(SrcStr != NULL)); //使用断言

           char* tempStr = DestStr;

           if(DestStr == SrcStr)return DestStr;   //自我复制

           while((*(DestStr++) =*(SrcStr++)) !='\0')//先拷贝,后判断,这样就不用在拷贝完了后,再加一句

           NULL;                    //*strDest = '\0'; -->即加一个结束符.因为字符串结束已拷贝了.

           return tempStr;                                                     //返回目标地址,方便链式操作

    }

           函数的不安全性体现在两个方面:可能存在存在拷贝溢出的情况,可能引起覆盖问题。覆盖问题如下所示。对于SrcStr在前而DestStr在后,则这样就会拷贝前边把SrcStr后边的内容拷贝出错,从而不能完成正确拷贝。


    2.strlen

    int strlen(const char *str)

     {

         int len = 0;

            assert(str!= NULL);

            while(*str++)

            {

                  len++;

            }

            return len;

     }


    展开全文
  • C语言函数隐式声明(1)

    千次阅读 2018-12-27 19:24:17
    这就奇怪了,连使用标准库函数printf()都要包括标准输入输出头文件<stdio.h>,何况是自定义函数?这个问题困扰了我很久。前天问中创公司奚钟华,他说:确实没有头文件,他也试过,在原来的目录中编写...
  • strcat源码分析

    2017-08-06 13:36:00
    strcpy、strcat、memmove、memcpy等标准库函数源码是非常常见C/C++笔试题,在会用的基础上一定要会其实现。本人是半路出家学C语言,在面试某还算大型公司时就吃了大亏。在这里分享strcat源码,并附上个人见解。 #...
  • 有时,我想知道我正在使用的某些C函数是如何实现的,例如,标准C库函数memmove() 。 该目录包含一组开放源码C代码,以用作参考。 每个目录都包含一个Sublime Text项目,这对于快速查找我要查找的内容至关重要。 由于...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决...
  • 目录 标准库函数中的strcpy()源码 ...strcpy是一种C语言标准库函数。strcpy是string copy 字符串复制的缩写。 char *strcpy(char *strDest, const char *strSrc)简单的理解:源字符串strSrc的内容复制给目标字符串

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

c语言标准库函数源码

c语言 订阅