1.对于 *string++!='\0',它其实等价于:

*string!='\0';
string++; 

2.对于 strcpy函数,如果要复制的字符串比老字符串短,由于新字符串是以NUL(即’\0’)结尾,所以老字符串最后剩余的几个字符也会被有效地删除。
如:

char message[ ]=="Original message";
strcpy(message,"Different");

此时message=”Different”

3.同样使用strcpy和strcat时,目标字符数组的空间要足以容纳需要复制的字符串。

字符串 内存操作

这些函数都在#include <cstring>

1.void *memcpy(void *dst,void const *src,size_t length);
其实就是从src的起始位置复制length个元素到dst的内存起始位置
例子:

#include <stdio.h>
#include <string.h>struct {char name[40];int age;
} person, person_copy;int main()
{char myname[] = "Pierre de Fermat";/* using memcpy to copy string: */memcpy(person.name, myname, strlen(myname) + 1);person.age = 46;/* using memcpy to copy structure: */memcpy(&person_copy, &person, sizeof(person));printf("person_copy: %s, %d \n", person_copy.name, person_copy.age);return 0;
}

输出:
person_copy: Pierre de Fermat, 46

2.void *memmove(void *dst,void const *src,size_t length);
移动src开始的length个元素移动到dst开始的位置
例子:

/* memmove example */
#include <stdio.h>
#include <string.h>int main ()
{char str[] = "memmove can be very useful......";memmove (str+20,str+15,11);puts (str);return 0;
}

输出:
memmove can be very very useful.

3.int *memcmp(void const *a,void const *b,size_t length);
a>b,返回值大于0
a=b,返回值等于0
a

/* memcmp example */
#include <stdio.h>
#include <string.h>int main ()
{char buffer1[] = "DWgaOtP12df0";char buffer2[] = "DWGAOTP12DF0";int n;n=memcmp ( buffer1, buffer2, sizeof(buffer1) );if (n>0) printf ("'%s' is greater than '%s'.\n",buffer1,buffer2);else if (n<0) printf ("'%s' is less than '%s'.\n",buffer1,buffer2);else printf ("'%s' is the same as '%s'.\n",buffer1,buffer2);return 0;
}

输出:
‘DWgaOtP12df0’ is greater than ‘DWGAOTP12DF0’.

4.void *memchr(void const *a,int ch,size_t length);
从a开始的length元素个数中找ch出现的第一个位置
例子:
/* memchr example */

#include <stdio.h>
#include <string.h>int main()
{char * pch;char str[] = "Example string";pch = (char*)memchr(str, 'p', strlen(str));if (pch != NULL)printf("'p' found at position %d.\n", pch - str + 1);elseprintf("'p' not found.\n");return 0;
}

输出:
‘p’ found at position 5.

5.void * memset ( void * a, int ch, size_t length );
从a的开始的length元素都设置为值ch。
例子:

/* memset example */
#include <stdio.h>
#include <string.h>int main()
{char str[] = "almost every programmer should know memset!";memset(str, '-', 6);puts(str);return 0;
}

输出:

—— every programmer should know memset!

《C和指针》——字符串操作补、字符串内存操作相关推荐

  1. 字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...

    本帖最后由 奉聪 于 2017-1-25 14:54 编辑 *******前言******* 我数一下,我发了几个帖子,1.2.3? 哈哈哈,没几个哈,感谢吾爱,让我学到了很多,乐于分享,共同进步! ...

  2. 字符操作库函数以及内存操作库函数 C语言实现

    字符操作库函数 strlen strlen判断结束的标志为找到字符串中的'\0',也就是说如果字符串中间出现'\0'将会导致strlen停止 即strlen的返回值是'\0'前所出现的字符个数   然 ...

  3. java io--内存操作流_JavaIO——内存操作流、打印流

    我们之前所做的都是对文件进行IO处理,实则我们也可以对内存进行IO处理.我们将发生在内存中的IO处理称为内存流. 内存操作流也可分为两类:字节内存流和字符内存流. (1)ByteArrayInputS ...

  4. STM32学习第三课:STM32 c语言学习基础3(内存操作、指针、结构指针)

    1.内存操作 在对内存操作头疼的时候我发现了这篇神奇的文章,拜读之后豁然开朗心生崇拜 数据指针 在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它 ...

  5. 《C和指针》——C语言字符串操作

    字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符 ...

  6. C语言处理字符串及内存操作

    字符串处理函数 1.字符串长度 strlen表示包含的字符的个数,size_t strlen(char cosnt *string), 返回的是size_t类型,它是无符号整数类型,在表达式中进行运算 ...

  7. C语言——常见的字符串函数+内存操作函数的介绍及实现

    文章目录 前言 一.字符串函数 1.求字符串长度 strlen 2.长度不受限制的字符串函数strcpy.strcat.strcmp 字符串拷贝 strcpy 字符串追加拷贝 strcat 字符串比较 ...

  8. c语言内存复制函数,【C语言】 字符串操作函数及内存拷贝函数归总

    今天在这里把零散的一些常用的字符串操作函数和内存拷贝函数进行一下归总实现. 一 . 字符串操作函数 字符串操作函数有很多,这里我列举一些常用的函数,以及自实现的代码: 字符串拷贝函数: 函数原型:ch ...

  9. C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示

    目录 结构化数据表示 一.内存地址: 二.全局变量和局部变量的内存布局 三.数据在内存中的表示 四.数组在内存中的表示 五.字符串在内存中的表示 六.结构和联合在内存中的表示 结构化数据表示 一.内存 ...

最新文章

  1. 大数据驱动的运营创新和探索
  2. 异常-java.util.concurrent.TimeoutException: Futures timed out after [100000 milliseconds]
  3. vscode设置代码编辑时组合键代替方向键移动光标
  4. Django 部署(Nginx+uwsgi)
  5. CodeForces - 1312E Array Shrinking(区间dp)
  6. Aspose.Cells使用总结大全
  7. Android背景色渐变效果(shape,gradient) (转)
  8. kaggle共享单车数据分析及预测(随机森林)
  9. 电脑中计算机右键管理无法打开,win8系统计算机右键菜单中的管理打不开怎么办...
  10. Transformer-XL语言模型:超长上下文依赖
  11. C++设计模式——观察者模式(转)
  12. VBOX下安装RHEL5.4增强工具失败的解决办法
  13. 两种方式打开jar文件
  14. java核心技术卷I 第4-5章
  15. 关于pthread_cancel()的运用,取消点的理解
  16. Dreamweaver 网页设计作业静态模板
  17. 有关什么情况下session会失效
  18. proxifier for mac 破解版 v2.19
  19. Matlab学习3-图像处理之镜像、错切、透视
  20. MySQL 重置 root 密码以及修改密码时报错password字段不存在

热门文章

  1. php mysql 日期查找_PHP / MySQL存储和搜索日期
  2. Canvas-drawImage 绘制图片模糊问题
  3. python实现批量更改xml文件中内容替换
  4. (个人使用)uni-app开发(官方资源)· 汇总
  5. 微信群接龙报名小程序功能模块源码V1.1.38
  6. 三星电视开机显示服务器异常,三星液晶电视常见故障及维修方法
  7. easyuefi只能在基于uefi启动的_云计算学习体系-1.1-计算机硬件基础扩展知识BIOS/UEFI/MBR/GPT...
  8. mfc 子窗体 按钮不触发_资深程序员用c++开发MFC银行排队叫号系统,小白看了也能学会...
  9. 米拓建站系统(MetInfo CMS)文章定时发布软件
  10. 东北大学计算机分数线2017,东北大学2017年艺术类专业录取分数线