C字符串操作函数实现方法小结

   2015-06-23 0
核心提示:这篇文章主要介绍了C字符串操作函数实现方法,实例总结了C语言字符串操作的相关技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了C字符串操作函数实现方法。分享给大家供大家参考。具体如下:

下面是部分C字符串操作函数的实现,或许在某些笔试时可以用到!

#ifndef NULL
#define NULL ((void *)0)
#endif
/*
  memcpy的实现代码
*/
void* memcpy(void *pDst, void *pSrc, int iLen)
{
  char *pTmp = (char *)pDst;
  char *pTmp2 = (char *)pSrc;
  if(0 == iLen)
    return pDst;
  while(iLen--)
    *pTmp++ = *pTmp2++;
  return pDst;
}
/*
  memset的实现代码
*/
void* memset(void *pDst, int iSet, int iLen)
{
  char *pTmp = (char *)pDst;
  if(0 == iLen)
    return pDst;
  while(iLen--)
    *pTmp++ = (char)iSet;
  return pDst;
}
/*
  strcpy的实现代码
*/
char *strcpy(char *pDst, char *pSrc)
{
  char *pRst = pDst;
  do
    *pDst++ = *pSrc;
  while(*pSrc++);
  return pRst;
}
/*
  strcat的实现代码
*/
char *strcat(char *s, char *a)
{
  char *save = s;
  for(; *s; ++s);
  while((*s++ = *a++) != 0);
  return save;
}
/*
  strlen的实现代码
*/
int strlen(char *pStr)
{
  int iLen = 0;
  while(*pStr++)
    iLen++;
  return iLen;
}
/*
  strcmp的实现
*/
int strcmp(char *s, char *t)
{
  for(; *s == *t; s++, t++)
  {
    if(('/0' == *s) || ('/0' == *t))
    {
      if(*s == *t)
        return 0;
      else
        break;
    }
  }
  return ((*s > *t)  1 : -1);
}
/*
  strncmp的实现
*/
int m_strncmp(char *s, char *t, int n)
{
  if(0 == n)
    return 0;
  for (; (--n > 0) && (*s==*t); s++,t++)
  {
    if ('/0'==*s)
      return 0;
  }
  if(*s == *t)
    return 0;
  return ((*s > *t)  1 : -1);
}
/*
  strstr的实现
*/
char* strstr(char *s, char *find)
{
  char c, sc;
  unsigned int len;
  if ((c = *find++) != 0) 
  {
    len = lzs_strlen(find);
    do 
    {
      do 
      {
        if ((sc = *s++) == 0)
          return (NULL);
      } while (sc != c);
    } while (lzs_strncmp(s, find, len) != 0);
    s--;
  }
  return ((char *)s);
}

希望本文所述对大家的C语言程序设计有所帮助。

 
标签: C 字符串
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 拓端tecdat|R语言VAR模型的不同类型的脉冲响应
    原文链接:http://tecdat.cn/?p=9384目录模型与数据估算值预测误差脉冲响应识别问题正交脉冲响应结构脉冲反应广义脉冲响应参考文献脉冲响应分析是采用向量自回归模型的计量经济学分析中的重要一步。它们的主要目的是描述模型变量对一个或多个变量的冲击的演化
    03-16
  • 《黑马程序员》 category分类的使用(Objective
    分类的作用:在不改变原来类的基础上,可以给类增加一些方法。使用注意 : ①  分类只能增加方法,不可以增加成员变量                ②  分类的方法在实现中可以访问成员变量,不过成员变量必须手动实现。               
    03-16
  • Windows API Reference for C#, VB.NET
    不错的.net 下用API的参考站点地址在:http://www.webtropy.com/articles/Win32-API-DllImport-art9.asp 下面摘抄分类,便于大家直接就拿来用: File, Memory, Process, Threading, Time, Console, and Comm control(kernel32.dll) _hread_hwrite_lclose_lcr
    03-16
  • 拓端tecdat|R语言代写实现向量自回归VAR模型
    原文链接:http://tecdat.cn/?p=8478 澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。澳大利亚政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到刺激。因此,收入增加了。VAR面临的批
    03-16
  • 项目中使用TypeScript的TodoList实例详解
    项目中使用TypeScript的TodoList实例详解
    目录为什么用todolisttodolist的ts化数据到视图实现handleTodoItemreadonly分类交叉类型新增功能联合类型可选属性数据转视图总结为什么用todolist现代的框架教程目前再也不是写个hello world那么简单了,而是需要有一定基础能力能够做到数据绑定、遍历、条件
    03-16
  • 我只是想在我的 Mac 上将 Ruby 和 Rails 更新到终端中的最新版本。 .
    我只是想在我的 Mac 上将 Ruby 和 Rails 更新到
    介绍自从我尝试创建一个简单的应用程序以来已经有很长时间了,并且我尝试在创建它之前将 Ruby 和 Rails 更新到最新版本,但是我意外卡住了,所以我将它作为备忘录留下。作为版本升级1. 更新 Homebrew 和 rbenv2. 红宝石更新3. Rails 更新这就是它的感觉。让我
    03-16
  • Objective-C学习—UIScrollView控件使用
    Objective-C学习—UIScrollView控件使用
    一、知识点简单介绍1.UIScrollView控件是什么?(1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限(2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看屏幕以外的内容(3)普通的UIView不具备滚动功能
    03-16
  • SICP:复数的直角和极坐标的表示(Python实现)
    SICP:复数的直角和极坐标的表示(Python实现)
    数据抽象屏障是控制复杂性的强有力工具,然而这种类型的数据抽象还不够强大有力。从一个另一个角度看,对于一个数据对象可能存在多种有用的表示方式,且我们希望所设计的系统能够处理多种表示形式。比如,复数就可以表示为两种几乎等价的形式:直角坐标形式(
    03-16
  • 微信小程序中overflow:scroll失效的问题 微信小程序overflow设置滚动
    微信小程序中overflow:scroll失效的问题 微信小
    .common-pop-table {padding: 0 30rpx;overflow: scroll;max-height: 70%;}研究后发现,要实际的设置对应的那个维度的高度,wcss改成.common-pop-table {padding: 0 30rpx;overflow: scroll;max-height: 400px;}就恢复正常了
    03-08
  • bloom-server 基于 rust 编写的 rest api cache 中间件
    bloom-server 基于 rust 编写的 rest api cache
    bloom-server 基于 rust 编写的 rest api cache 中间件,他位于lb 与api worker 之间,使用redis 作为缓存内容存储, 我们需要做的就是配置proxy,同时他使用基于share 的概念,进行cache 的分布存储,包含了请求端口(proxy,访问数据) 以及cache 控制端口(
    03-08
点击排行