`

c字符串拷贝操作

阅读更多
#include <string.h>

char *strcpy(char *dest,char *src);
char *strdup(const char *s);
char *strndup(const char *s, size_t n);
void *memcpy(void *dest, const void *src, int n)
void *memmove( void* dest, const void* src, size_tcount )

strcpy 把src所指由NULL结束的字符串复制到dest所指的数组中,src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。
strdup()主要是拷贝字符串s的一个副本,由函数返回值返回,这个副本有自己的内存空间,和s不相干。
strndup()就是,拷贝的时候,最多拷贝n个字符,如果s的长度大于n,后面的就略去。
memcpy 从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中,与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节,如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址;注意,source和destin都不一定是数组,任意的可读写的空间均可。
memmove由src所指内存区域复制count个字节到dest所指内存区域,src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针。

code for example:
//str copy
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define BUFFER_SIZE 128
int main(){
char s1[]="Linux C Programming";
char s2[]={'a','b','c','\0'};//must add \0
char s[]={'a','b','c'};
char d1[BUFFER_SIZE];
char d2[BUFFER_SIZE];
//功能:把src所指由NULL结束的字符串复制到dest所指的数组中
strcpy(d1,s1);
strcpy(d2,s2);
printf("%s\n",d1);
printf("%s\n",d2);
//返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放
char *dup=strdup(s2);
printf("%s\n",dup);
free(dup);
//而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等,根据其第3个参数决定复制的长度
char men[BUFFER_SIZE];
memcpy(men,s,3);
men[strlen(s)]='\0';
printf("%s\n",men);
//void *memmove( void* dest, const void* src, size_t count),由src所指内存区域复制count个字节到dest所指内存区域,src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针
memmove(s1,s1+6,(strlen(s1)-6));
s1[strlen(s1)-6]='\0';
printf("%s\n",s1);
return 0;
}
分享到:
评论

相关推荐

    C语言字符串函数大全C/C++基础 字符串操作大全

    功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main(void) { char string[10]; char *str1 = ...

    c语言字符串操作大全

    c语言字符串个函数操作大全 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 函数名: strcat 功 能: 字符串拼接函数 用 法: char *strcat(char *destin, char *source); 函数名: strchr 功 能: 在一个串中...

    C字符串操作函数的实现详细解析

    2. strcpy(), 字符串拷贝.  char *strcpy(char *destination, const char *source) { while(*destinaton++=*source++); return (destination-1); } 3. strcat(), 字符串的连接.  char *strcat(char *targe

    C++ 字符串的反转五种方法实例

    定义一个新的与传递过来字符串长度 相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转*//*第一种,采用以上思路解法,传递为const类型C风格字符指针,返回...

    C语言实现字符串操作函数的实例

    在编写程序的过程中,我们经常使用到一些字符串函数,例如求字符串长度,拷贝字符串……,这些函数都在C标准库中存在,我们可以直接使用。但我们还需要掌握这些函数的实现方法,今天来看看一些常用的字符串操作函数...

    qstring:一个受Redis中的SDS和Python中的字符串对象洗脑的动态字符串库

    使用引用计数管理相同的字符串,避免不必要的字符串拷贝 支持深拷贝(deepcopy) 缓存字符串哈希值,更快的字符串比较操作 同时,我也希望能够做到: 线程安全 在QString库中,我们使用qstring标识符声明一个QString...

    C,C++中常用的操作字符串的函数

    功 能: 拷贝一个字符串到另一个,遇到’\0’时停止拷贝,destin要有足够大的空间 用 法: char *stpcpy(char *destin, char *source);   函数名: strcat 功 能: 字符串拼接函数,注意,destin要有足够大的空间 用 法...

    C/C++面试之算法系列--几个典型的内存拷贝及字符串函数实现

    C/C++面试之算法系列--几个典型的内存拷贝及字符串函数实现 写一个函数,完成内存之间的拷贝。[考虑问题是否全面,是否考虑内存重叠问题] 返回void *支持链式操作,参数类型是void *以支持任意类型的指针,输入...

    字符串操作之pyperclip模块拷贝粘贴

    pyperclip模块有copy()和paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。将程序的输出发送到剪贴板,使它很容易粘贴到邮件、文字...pyperclip.copy()和键盘上的Ctrl+C作用一样,会把字符串传入到粘贴板;

    C++中string类的使用说明(保姆级说明)

    在C++中,`std::string` 类已经提供了丰富的方法来处理字符串,以下是 `std::string` 类的一些常用方法... - `operator+`: 字符串连接操作符,用于将两个字符串连接起来。 - `append()`: 将一个字符串追加到另一个字符

    在Python中操作字符串之replace()方法的使用

    replace()方法返回当前old换成new,...此方法返回字符串的拷贝与旧子串出现的所有被新的所取代。如果可选参数最大值给定,只有第一个计数发生替换。 例子 下面的示例演示了replace()方法的使用。 #!/usr/bin/python st

    C++中 String 类的常用方法.md

    * `operator=`: 赋值操作符,用于将一个字符串赋值给另一个字符串。 3. **访问元素** * `at(size_type pos) const`: 返回位置 `pos` 的字符(如果 `pos` 超出范围,则抛出 `std::out_of_range` 异常)。 * `...

    linux_c API函数大全

    5.内存及字符串操作篇 36 5.1 36 bcmp(比较内存内容) 36 5.2 36 bcopy(拷贝内存内容) 36 5.3 37 bzero(将一段内存内容全清为零) 37 5.4 37 index(查找字符串中第一个出现的指定字符) 37 5.5. 37 memccpy...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table...

    C/C++面试题目及解答.doc

    鉴于 memcpy 函数等长拷贝的特点以及数据类型代表的物理意义,memcpy 函数通常限于同种类型数据或对象之间的拷贝,其中当然也包括字符串拷贝以及基本数据类型的拷贝。 &lt;br&gt;对于字符串拷贝来说,用上述三个函数都...

    清华大学程序考试例题

    4、 写一个3D矢量类CVector3D,要求含三种构造函数,并有拷贝,点积,叉积,求模,单位化等操作,并实现”+; -; =; ==; +=; -=; *; [ ]” 等运算符的重载。(用C++实现) 5、 请编写一个家庭收支管理程序,要求可以...

    C语言程序设计标准教程

    因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。  本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。数组类型说明 在C语言中使用数组必须先进行类型说明。 ...

    VC++6.0核心编程源码.rar

    当然,你首先必须自己转换字符串,然后将已转换的消息表资源嵌入你的.exe文件或DLL模块,不过,这时该函数会选定正确的嵌入对象。ErrorShow示例应用程序(本章后面将加以介绍)展示了如何调用该函数,以便将...

    C 语言实例解析精粹(第二版)(书+盘)

    031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 ...

    c++ 运算符重载和方法重载

    字符串相关操作: strcpy(s1,s2)复制s2为s1; strcmp(s1,s2)比较s1和s2字符串内容是否相同 strcat(s1,s2)拼接字符串,把s2拼接在s1的末尾 strchr(s1,ch)找到s1这个字符串里面第一次出现ch这个字符的位置...

Global site tag (gtag.js) - Google Analytics