博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言的一些常用代码
阅读量:6264 次
发布时间:2019-06-22

本文共 2070 字,大约阅读时间需要 6 分钟。

hot3.png

        C语言经常需要发明各种轮子,为方便以后能够把精力放在应用逻辑上而不在发明轮子上,把一些常用的代码片段列于此。

        首先是字符串处理方面的,strcpy 函数容易越界,习惯使用 strncpy 函数,但此函数只管复制最多 n 个字符,并不会把末尾的字符自动修改为 '\0',所以给它加上这个操作:

char* utils_strncpy (char *dest, const char *src, size_t length){      strncpy (dest, src, length);      dest[length] = '\0';      return dest;}
内存分配函数 malloc 分配内存却不进行初始化,给它也加上初始化的操作:
void* utils_malloc (size_t size){      void *ptr = malloc (size);      if (ptr != NULL)            memset (ptr, 0, size);      return ptr;}
内存释放函数 free 只是释放内存,却不把指针置为空指针,而且对空指针执行 free 也不知道是否安全,于是改造如下:
void utils_free(void **p){      if (p == NULL || *p == NULL)            return;      free(*p);      *p = NULL;}

相应的有字符串复制函数:

char* utils_strdup (const char *ch){      char *copy;      size_t length;      if (ch == NULL)            return NULL;      length = strlen (ch);      copy = (char *) utils_malloc (length + 1);      if (copy==NULL)	    return NULL;      utils_strncpy (copy, ch, length);      return copy;}

把字符串中的大写字母改为小写:

int utils_tolower (char *word){      size_t i;      size_t len = strlen (word);      for (i = 0; i <= len - 1; i++)      {            if ('A' <= word[i] && word[i] <= 'Z')            word[i] = word[i] + 32;      }      return 0;}
清除字符串首尾的空白字符(空格,\r,\n,\r):
int utils_clrspace (char *word){      char *pbeg;      char *pend;      size_t len;      if (word == NULL)            return -1;      if (*word == '\0')            return 0;      len = strlen (word);      pbeg = word;      while ((' ' == *pbeg) || ('\r' == *pbeg) || ('\n' == *pbeg) || ('\t' == *pbeg))            pbeg++;      pend = word + len - 1;      while ((' ' == *pend) || ('\r' == *pend) || ('\n' == *pend) || ('\t' == *pend))      {            pend--;            if (pend < pbeg)            {                 *word = '\0';                 return 0;            }      }      /* Add terminating NULL only if we've cleared room for it */      if (pend + 1 <= word + (len - 1))            pend[1] = '\0';      if (pbeg != word)      memmove (word, pbeg, pend - pbeg + 2);      return 0;}

嘎然而止.......

转载于:https://my.oschina.net/zhcosin/blog/102281

你可能感兴趣的文章
Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)------转帖
查看>>
vb webbrower 相对坐标
查看>>
原始的js代码和jquery对比
查看>>
.net和java和谐相处之安卓客户端+.net asp.net mvc webapi 2
查看>>
Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用
查看>>
jquery对象和javascript对象相互转换
查看>>
laravel开启调试模式
查看>>
Spring aop的实现原理
查看>>
ADO.NET一小记-select top 参数问题
查看>>
(转)jquery easyui treegrid使用小结 (主要讲的是如何编辑easyui中的行信息包括添加 下拉列表等)...
查看>>
iOS使用宏写单例
查看>>
Isotig & cDNA & gene structure & alternative splicing & gene loci & 表达谱
查看>>
3、Cocos2dx 3.0游戏开发找小三之搭建开发环境
查看>>
携程Apollo(阿波罗)配置中心使用Google代码风格文件(在Eclipse使用Google代码风格)(配合阿里巴巴代码规约快速设置)...
查看>>
Hadoop(七)HDFS容错机制详解
查看>>
字符串中去除多余的空格保留一个(C#)
查看>>
Python随机字符串验证码
查看>>
SQL中 patindex函数的用法
查看>>
Vmware 虚拟机无法启动
查看>>
LeetCode: Partition List 解题报告
查看>>