常用C关于字符串操作的库函数实现:

  1. //获取字符串长度
  2. int Strlen(const char* s) {
  3. assert(s != NULL);
  4. int len = ;
  5. while (*s++ != '\0') {
  6. len++;
  7. }
  8. return len;
  9. }
  10.  
  11. //将src字符串复制到dest中
  12. char* Strcpy(char* dest, const char* src) {
  13. assert(dest != NULL && src != NULL);
  14. char* p = dest;
  15. while ((*dest++ = *src++) != '\0');
  16. return dest;
  17. }
  18.  
  19. //将src字符串前n个字符复制到dest中
  20. char* Strncpy(char* dest, const char* src, int n) {
  21. assert(dest != NULL && src != NULL);
  22. char* p = dest;
  23. int m = ;
  24. while (*p++ != '\0') {
  25. m++;
  26. }
  27. if (n > m)
  28. return NULL;
  29.  
  30. p = dest;
  31. while (n--) {
  32. *p++ = *src++;
  33. }
  34. return dest;
  35. }
  36.  
  37. //比较两个字符串大小
  38. int Strcmp(const char* str1, const char* str2) {
  39. assert(str1 != NULL && str2 != NULL);
  40. while (*str1 && *str2 && *str1 == *str2) {
  41. str1++;
  42. str2++;
  43. }
  44. return *str1 - *str2;
  45. }
  46.  
  47. //将src字符串连接到dest字符串后面
  48. char* Strcat(char* dest, const char* src) {
  49. assert(dest != NULL && src != NULL);
  50. char* p = dest;
  51. while (*p++ != '\0');
  52. p--;
  53. while ((*p++ = *src++) != '\0');
  54. return dest;
  55. }
  56.  
  57. /*
  58. * memcpy函数用于资源内存(src指向的内存)拷贝到目标内存(dest指向的内存);拷贝的个数size
  59. * 用法::(1)可以拷贝任何类型的对象,因为函数的参数类型是void* ,由于函数拷贝是一个字节一个
  60. * 字节拷贝,实际操作是将void*强制转换成了char*,这样才能保证每一次加一个指针
  61. */
  62. void Memcpy(char* dest, const char* src, size_t n) {
  63. assert(dest != NULL && src != NULL);
  64. char* pDest = (char*)dest;
  65. const char *pSrc = (const char*)src;
  66. if (pDest <= pSrc || pSrc + n <= pDest) {
  67. while (n--) {
  68. *pDest++ = *pSrc++;
  69. }
  70. } else {
  71. pDest += n - ;
  72. pSrc += n - ;
  73. while (n--) {
  74. *pDest-- = *pSrc--;
  75. }
  76. }
  77. }
  78.  
  79. //memset内部实现memset(void*s,int ch,size_t n)
  80. /*将dest所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值,返回s*/
  81. void* Memset(void* dest, int ch, size_t n) {
  82. assert(dest != NULL && n >= );
  83. char* p = (char*)dest;
  84. while (n--) {
  85. *p++ = (char)ch;
  86. }
  87. return dest;
  88. }

C关于字符串操作的库函数实现总结的更多相关文章

  1. C语言字符串操作常用库函数

    C语言字符串操作常用库函数 *********************************************************************************** 函数 ...

  2. 实现C语言字符串操作的库函数 包括基本的字符串复制 字符串长度 字符串比较等多种函数(C代码)

    头文件 "mystring.h" #ifndef _MYSTR_H #define _MYSTR_H #include <stdio.h> #include <s ...

  3. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  4. C语言的本质(22)——C标准库之字符串操作

    编译器.浏览器.Office套件等程序的主要功能都是符号处理,符号处理功能在程序中占相当大的比例,无论多复杂的符号处理都是由各种基本的字符串操作组成的,下面介绍如何用C语言的库函数做字符串初始化.取长 ...

  5. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...

  6. 九度OJ 1206:字符串连接 (字符串操作)

    时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:4127 解决:1957 题目描述: 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来. 输入: 每一行包括两个 ...

  7. C++字符串操作笔试题第二波

    //1.字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成"%20". //比如输入"we are happy.".则输出"we%20are ...

  8. VC++ 字符串操作学习总结

    vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间 ...

  9. Java中的字符串操作(比较String,StringBuiler和StringBuffer)

    一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己 ...

随机推荐

  1. 数据库连接windows身份验证、sql验证

    windows身份验证:"server=.;database=Northwind;Integrated Security=True;" sql验证:"server=.;d ...

  2. 简单的尝试下angr

    0x00:前言 之前接触到了符号执行,可以用于程序的自动化分析,感觉还是比较神奇,工业上的具体用法不是很清楚,不过在CTF中这个东西慢慢在流行...从defcon 2016就可以看出(有很多人解re用 ...

  3. 灰度图像--频域滤波 傅里叶变换之离散时间傅里叶变换(DTFT)

    学习DIP第22天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...

  4. 数据分析-excel数据分析(数据分析师岗位分析)

    使用的函数:字符截取函数:LEFT(),MID()  定位函数:FIND()   统计函数:COUNTIF() 1.获取薪资的区间的最小值min和最大值max 处理方法:新插入多列,使用find()定 ...

  5. 基于libcurl的restfull接口 post posts get gets

    头文件 #pragma once #ifndef __HTTP_CURL_H__ #define __HTTP_CURL_H__ #include <string> #include &q ...

  6. scrapy_redis的使用

    配置Scrapy-Redis 配置Scrapy-Redis非常简单,只需要修改一下settings.py配置文件即可. 1. 核心配置 首先最主要的是,需要将调度器的类和去重的类替换为Scrapy-R ...

  7. 20191114-3 Beta阶段贡献分配

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10006 要求1 每位组员的贡献分值 贺敬文:10 王志文:9 彭思雨:8 ...

  8. TCP之RST报文段

    TCP 首部中的 RST 比特是用于 "复位" 的.一般来说,无论何时一个报文段发往基准的连接(referenced connection)出现错误,TCP 都会发出一个复位报文段 ...

  9. mongodb 单节点集群配置 (开发环境)

    最近项目会用到mongodb的oplog触发业务流程,开发时的debug很不方便.所以在本地创建一个单台mongodb 集群进行开发debug. 大概:mongodb可以产生oplog的部署方式应该是 ...

  10. windos批处理启动redis与哨兵

    为各个启动单独建立脚本后用总的bat调用 创建脚本,redis6379.bat脚本内容:@echo offtitle redis-serverset ENV_HOME6379="G:\Red ...