易截截图软件、单文件、免安装、纯绿色、仅160KB

C 标准库 函数 源代码的实现 和 分析

//库函数实现
char *strcat (char *dst, const char *src)
{
  char *p = dst;
  while (*p)
    p++;
  while ((*p++ = *src++))
    ;
  return dst;
}
char *strncat (char *s1, const char *s2, long unsigned int n)
{
  char *dest = s1;
  char c;
  while (*s1) s1++;
 c = '\0';
  while (n > 0)
 {
      c = *s2++;
  *s1++ = c;
      if (c == '\0')
  return dest;
      n--;
    }
  if (c != '\0')
    *s1 = '\0';
  return dest;
}
 
char * strcpy (char *d, const char *s)//
{
  char *r = d;
  while ((*d++ = *s++));
  return r;
}
char *strncpy (char *s1, const char *s2, long unsigned int n)
{
  char *dest = s1;
  for (; *s2 && n; n--) //n 如果大于s2的长度,则设置0
    *s1++ = *s2++;
  while (n--)
    *s1++ = 0;
  return dest;
}
void * memcpy (void *dst, const void *src, long unsigned int n)
{
  const char *srcp;
  char *dstp;
  srcp = src;
  dstp = dst;
  while (n-- != 0)
    *dstp++ = *srcp++;
  return dst;
}
void *memmove (void *dst, const void *src, long unsigned int n)
{
  const char *srcp;
  char *dstp;
  srcp = src;
  dstp = dst;
  if (srcp < dstp)
    while (n-- != 0)
      dstp[n] = srcp[n];
  else
    while (n-- != 0)
      *dstp++ = *srcp++;
  return dst;
}
void *memset (void *dst, int c, long unsigned int n)
{
  while (n-- != 0)
    n[(char *) dst] = c; // 即 (char*)dst[n] = c;
  return dst;
}
库函数力求简洁,因此存在一定的安全的问题,这是在使用过程中特别注意的地方。也因此VC2005才推出_s的所谓的安全函数。也就是多加了判断位。


相关文档:

标准C/C++程序通过gSOAP调用WebService

转自:http://commandos.blog.51cto.com/154976/130652
一、 环境准备
在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。
在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得:[url]http://www.cs.fsu.edu/~engelen/soap.html[/url]
我下载的是gsoap_2.7.12.tar.gz
下载下来解压缩,按正常安装过 ......

DS计划C深入项目学习总结——变量的作用域

1.1 变量作用域
1.1.1 几种常见类型变量的作用域
作用域(scope)或者可见性是指变量在程序内的可见和可引用的范围。
比如:
1、 全局变量在所有的文件都可见,那他的作用域就是所有文件;
2、 static定义的全局变量,只在定义它的源文件中可见,那他的作用域就是其所在的源文件;
3、 函数内部的局部变量,只在其函数 ......

C 语言的面向对象

C 语言的面向对象
如前所说,面向对象是一种软件设计的思想,是语言无关的。在本节中,我举一个链表(list) 的例子来说明如何在 C 语言中的设计出有面向对象风格的代码。
定义接口
接口是面向对象语言中的一个比较重要的概念,接口只对外部承诺实现该接口的实体可以完成什么样的功能,但是不暴露实现的方式。这样的好处是 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号