首页 > 其他分享 >C语言常用的代码

C语言常用的代码

时间:2022-11-11 11:44:23浏览次数:49  
标签:常用 return 代码 C语言 char pend word pbeg NULL

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;

}

标签:常用,return,代码,C语言,char,pend,word,pbeg,NULL
From: https://www.cnblogs.com/dsfgwerg/p/16880060.html

相关文章

  • 1. linux常用命令
    1.远程连接[email protected]#指定端口号用户名和IP默认端口56:ssh3306:mysql80:http443:https6379:redis 2.查看网卡信息ifconfig......
  • 一个简单的步骤让你的 Python 代码更干净
    说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示、import排序、PEP8规范。今天分享一个小技巧,通过一个简单的步骤就可以让你的......
  • uniapp上传用户头像和修改昵称代码
    因小程序wx.getUserProfile接口被收回,现封装一份上传用户头像和修改昵称的代码  <template><viewclass="content"><buttonopen-type="chooseAvatar"clas......
  • 前端打包bulid后代码 放在 后端项目什么位置
    前端打包后的样子:  2放在项目的那个位置2.1对于index.html寻找项目根url,找见首页url,就找见了index.html的存放位置了2.2对于static文件夹找跟......
  • mysql常用操作
    查看表的字符集语法:showtablestatusfrom库名like表名; mysql8版本查看MYSQL数据库服务器和数据库字符集方法一:showvariableslike'%character%';方法二:showv......
  • C# 连接SQLSERVER数据库常用操作类
    //数据库连接字符串publicstaticstringconnectStr=@"server=.;database=test;uid=sa;pwd=123456;";///<summary>///增删改操作类......
  • 代码随想录Day22
    LeetCode222.完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数。示例1:输入:root=[1,2,3,4,5,6]输出:6示例2:输入:root=[]输出:0示例3:输入:ro......
  • 拓端数据|R语言代写阈值模型代码示例
    阈值模型用于统计的几个不同区域,而不仅仅是时间序列。一般的想法是,当变量的值超过某个阈值时,过程可能表现不同。也就是说,当值大于阈值时,可以应用不同的模型,而不是当它们低于......
  • 「微信小程序」|开发常用事例(六)
    历史文章回顾:​​微信小程序|开发常用事例(一)​​​​微信小程序|开发常用事例(二)​​​​微信小程序Notes|开发常用事例(三)​​​​微信小程序Notes|开发常用事例(四)​​......
  • 基于改进神经网络的风电功率预测(Matlab代码实现)
    ......