精华内容
下载资源
问答
  • 2019-05-26 15:39:33
    #include<string.h>
    char *strncpy(char *dest, const char *src, unsigned long n);
    

    功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置。而strncpy()的功能是将指针变量src所指向的字符串的前 n 个字符串复制到指针变量dest所指向的位置。只要将strcpy()掌握之后,strncpy就简单多了,关于strncpy()唯一需要注意的是如果他不是复制整个字符串,那么最后的结束标识符’\0’就不会被复制,这时候必须手动编程在后添加’\0’,否则输出时由于找不到结束符就会输出乱码,他会一直输出,直到遇到’\0’为止。

    内存拷贝函数memcpy()

    strcpy()只能复制字符串,但是memcpy()可以复制任何数据,因为他是内存拷贝函数,是直接操作内存空间。

    #include<stdio.h>
    void *memcpy(void *dest, const void *src, unsigned long n);
    

    功能是从指针变量src所指向的内存空间中复制 n 个字节的数据到指针变量 dest 所指向的内存空间。

    1 字符数组 dest 的长度一定要大于复制的字符字节数 n,否则会产生溢出,导致相邻内存空间的数据被覆盖,这样很危险。

    2 入股复制的是完整的字符串,那么字符数组 dest 的长度和复制的字节数 n 一定要考虑最后的标识符’\0’;

    3 如果不是完整复制一个字符串,而是仅仅复制前面几个 字符,那么最后的标志符“\0”,就不会被复制。这个时候在输出 dest的时候,因为找不到结束符“\0”,就不会一直往后输出,直到遇到’\0’为止。

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	char src[20] = "i love you mom";
    	char dest[20] = "\0";
    	memcpy(dest, src, 19);
    	printf("dest = %s\n", dest);
    	return 0;
    }
    
    更多相关内容
  • 该程序是我写的博客“一起talk C栗子吧(第六十回:C语言实例--字符串复制)”的配套程序,共享给大家使用
  • 字符串复制函数strcpy()

    万次阅读 2019-05-26 14:58:31
    strcpy是 string copy的缩写,即“字符串复制”。他的原型是: #include<stdio.h> char *strcpy(char *dest, const char *src); 功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置,dest和...

    两个字符串变量不可以使用“=”进行直接赋值,只能通用strcpy()函数进行赋值。strcpy是 string copy的缩写,即“字符串复制”。他的原型是:

    #include<stdio.h>
    char *strcpy(char *dest, const char *src);
    

    功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置,dest和src可以是字符数组名,也可以是字符指针变量名。src也可以是一个字符串常量。dest是destination的缩写,即“目的地”,src是source的缩写,即“源”。

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	char str[30];
    	strcpy(str, "i love you");
    	printf("%s\n", str);
    	return 0;
    }
    

    第一:程序中要想调用strcpy()函数,必须引入<string.h>,而puts()和gets()函数就不需要。

    第二:strcpy()虽然也可以用于初始化,但与前面讲的初始化又有所不同。要想用strcpy()将一个字符串复制一个到字符数组中,那么字符数组在定义时长度一定要够大,要足够容纳被复制的字符串,如果不够,程序运行会出错,同样,在定义字符数组长度,一定要将结束标识符’\0’考虑进去,系统不会自动为’\0’分配内存单元的。

    第三:如果定义的字符数组长度大于所要复制的字符串长度,那么字符数组剩下的没用完的内存单元就将继续保存原有的数据。

    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	char str[20];
    	int i;
    	strcpy(str, "i love you");
    	strcpy(str, "Lord");
    	for(i=0; i<11; ++i)
    	{
    		printf("%c", str[i]);
    	}
    	printf("\n");
    	return 0;
    }
    
    展开全文
  • strcpy,即string copy(字符串复制)的缩写。 原型声明:char *strcpy(char *dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的...

    strcpy,即string copy(字符串复制)的缩写。
    原型声明:char *strcpy(char *dest, const char *src);
    头文件:#include <string.h>#include <stdio.h>
    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
    返回指向dest的指针(返回类型char*)。

    不使用C/C++标准库函数,进行字符串复制函数的编写:

    #include <stdio.h>
    #include <malloc.h>
    #include <assert.h>
    
    void stringcpy(char* to, const char* from) {
    	assert(to != NULL && from != NULL);
    	while (*from != '\0') {
    		*to++ = *from++;
    	}
    	*to = '\0';
    }
    
    int main(void) {
    	char* t = (char*)malloc(15);
    	char* f = (char*)malloc(15);
    	stringcpy(f, "abcdefg");
    	stringcpy(t, f);
    	printf("%s\n", t);
    	printf("%c\n", t[0]);
    	free(t);
    	free(f);
    	getchar();
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    详解:
    ① assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。

    *to++ = *from++先赋值再各自自增。
    *p++先执行++再执行*,分三步(*++都是同级运算符,右结合)
    (1)先执行p++,因为是后置,先用p
    (2)再执行 *p, 取p所指的内容;
    (3)最后再让p++,让p的地址加一个单位。
    注意:++*p(*p)++都是取p所指对象的值加1。

    *to = '\0'补上结束符,否则会乱码,如图。
    在这里插入图片描述
    char* t = (char*)malloc(15)使用 malloc 向堆动态申请内存;由于 malloc 返回类型为(void*),故用(char*)转换类型;char 为字符型变量,占1字节,此处申请了15字节的内存空间。
    注意:若已不再使用,需要用 free 手动释放由 malloc 申请的内存,防止内存泄漏。

    sizeof(t)的结果为4,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位),对于32位编译器,char*占4字节。

    strlen(t)的结果为7,strlen() 截取'\0'之前的字符串长度,其头文件为<string.h>

    getchar()类似于C++中的system("pause"),用于生成运行结果后暂停,方便查看结果,否则运行窗口会一闪而过,输入回车后即可关闭窗口。

    参考自《程序员面试宝典(第5版)》

    展开全文
  • 复制函数主要有4个,如下: 1、char * strcpy(char* destination,const char * source); 2、char* strncpy(char* destination,const char* source,size_t num); 3、void * memcpy(void* destination,const void* ...
  • 常见的字符串复制函数

    万次阅读 2017-07-02 17:03:24
    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 2.strcpy_s() _s函数是...

    1.strcpy()函数
    原型声明:char strcpy(char dest, const char *src);

    功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
    返回指向dest的指针。
    2.strcpy_s()
    _s函数是微软自己加的, 不是标准库, 最直观的是C++下, 该函数不在std命名空间下.
    _s函数要求传递数组时(比如字符串)需要额外传递一个参数表示缓存长度以免出错.
    在文件头部添加 #define _CRT_SECURE_NO_WARNINGS 1
    即可关闭vs的警告。(为了跨编译器允许,一般不使用strcpy_s函数,但在vs中会有警告,故使用宏定义消除警告。)
    注意,strcpy_s有两个版本,一个可以帮助我们自动推断缓冲区的大小,而另外一个不能帮助我们推断,因此在编译器不能推断缓冲区大小的时候,我们需要自己指定缓冲区的大小,如下面的程序所演示的那样。

    int main()
    {
         char sz[128] = {0};
         strcpy_s( sz, "Hello World!" );
         cout<< sz << endl;
    
         char* pSz2 = new char[128];
         strcpy_s( pSz2, 128, "hello");
         cout<< pSz2 << endl;
         delete pSz2;
        return 0;
    }

    3 strnpy()

    strncpy 是 C语言的库函数之一,来自 C语言标准库,定义于string.h,把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。
    函数原型char *strncpy(char *dest,char *src,size_t n);

    (c/c++)复制字符串src中的内容(字符,数字、汉字….)到字符串dest中,复制多少由size_tn的值决定。
    如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n小于src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加’\0’,也就是结果dest不包括’\0’,需要再手动添加一个’\0’。
    如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+’\0’。

    一般情况下,使用strncpy时,建议将n置为dest串长度(除非你将多个src串都复制到dest数组,并且从dest尾部反向操作),复制完毕后,为保险起见,将dest串最后一字符置NULL,避免发生输出乱码问题。当然喽,无论是strcpy还是strncpy,保证dest串容量(能容纳下src串)才是最重要的。

    4 strlcpy()

    linux C语言标准库函数strlcpy,是更加安全版本的strcpy函数,在已知目的地址空间大小的情况下,把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间,并不会造成缓冲区溢出。

    函数原型声明:size_t strlcpy(char *dst, const char *src, size_t size)

    功能: 在已知dest缓冲区大小并不会造成缓冲区溢出前提下,将src地址开始的字符串复制到以dest开始的地址空间
    返回值:src字符串的大小
    函数参数:参数dst为目的字符串开始的指针,src为源字符串的开始地址,参数size代表dst字符串的大小

    展开全文
  • C++字符串复制函数

    万次阅读 2016-10-20 15:44:28
    今天用到字符串复制操作,做一个以二进制的形式读一个文件,以16进制写到TXT中,再以十六进制转换成二进制写回原文件。达到复制文件的效果,同时用的是...strcpy:顾名思义,复制一个字符串函数原型为:1、char * st
  • 字符串复制。输入一个字符串t和一个正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。要求用字符指针定义并调用函数strmcpy(s,t,m),它的功能是将字符串t中从第m个字符开始的全部字符...
  • 自己编写字符串复制函数

    千次阅读 2015-03-23 19:53:31
    #include #include #include <assert.h>char *my_strcpy(char *dest, const char *src){ char *ret = dest; assert((dest != NULL) && (src != NULL)); //断言 if(dest == src)
  • 函数实现字符串复制

    千次阅读 2021-06-19 11:16:00
    使用函数实现字符串复制:输入一个字符串t和正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。 要求自定义并调用函数void strmcpy(char *s,char *t,int m).编写相应程序。 输入输出...
  • 函数介绍 1.strcmp(字符数组1,字符数组2或字符常量): 比较两个字符串大小,它是按照ASCII码值的顺序...将字符数组2的字符串(包括结束标识符'\0')复制到字符数组2中。 (第一个数组长度必须足以容纳第二个字符串
  • 【C/C++】字符串函数之复制函数

    万次阅读 2019-04-30 16:54:29
    C/C++字符串复制函数: C/C++字符串函数的头文件:string.h 复制函数主要有4个,如下: 1、char * strcpy(char* destination,const char * source); 2、char* strncpy(char* destination,const char* source,...
  • C语言中字符串相关的拷贝函数

    千次阅读 2022-04-03 22:09:50
    C语言下字符串拷贝函数汇总对比 1.1、strcpy 函数原型char *strcpy(char *dest, const char *src) 需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况,所以在实际使用一定...
  • 头文件:#include <string.h> 定义函数:char *strcpy(char *dest, const char *src);...函数说明:strcpy()会将参数src 字符串拷贝至参数dest 所指的地址。 返回值:返回参数dest 的字符串起始地址。
  • 编写字符串复制函数

    千次阅读 2011-08-03 10:24:59
    编写字符串复制函数 字符串复制函数看似简单,但隐藏了一些容易被忽略的细节,这些细节恰恰也是平时工作中的隐藏的BUG所在,一旦发生很难察觉,而且这也是各大企业在招聘的时候重要的考点。下面说明一下。 问题:...
  • 已知strcpy的函数原型:char *strcpy(char *strDest,const char *...不调用C++/C的字符串库函数,实现字符串复制函数strcpy。  一种方法: char *strcpy(char *strDest, const char *strSrc)//源字符串参数用const修
  • c++实现字符串复制函数strcpy()

    千次阅读 2014-07-29 21:52:25
    #include #include using namespace std; char *str_cpy(char *dest,char s[]) { char *p=s; char *q=dest; int m=strlen(s); while(m--!=0) { *q++=*p++; } *q='\0';...in
  • 指针 字符串复制函数

    千次阅读 2021-12-23 23:34:26
    编写自定义函数把一个字符串(不超80字符)的内容复制到另一个字符数组中。主函数输入一串字符,复制到另一个数组中输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬...
  • //① 题目叙述:编写一个函数_strcpy,其功能为将字符串 src 拷贝到字符数组 //target,函数原型声明为:void _strcpy(char* target, char* src); //② 在 main()函数中接收用户输入的一个字符串(不超出 256 个...
  • 字符串函数讲解(C语言笔记,建议收藏!!!)

    万次阅读 多人点赞 2021-06-20 14:25:31
    1、gets函数 2、puts函数 3、strcat函数 4、s't'r'c'p'y
  • 1.字符串拷贝函数strcpy 函数定义: char *strcpy(char *str1, const char *str2); 函数功能:把字符串str2(包括'\0')拷贝到字符串str1当中,并返回str1。 举例: #include<stdio.h> #include<string.h&...
  • 自行设计函数实现字符串复制

    千次阅读 2019-01-04 09:20:09
    字符串复制。 输入一个字符串t和一个正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。 要求用字符指针定义并调用函数strmcpy(s,t,m),它的功能是将字符串t中从第m个字符开始的全部...
  • java 字符串 复制_Java字符串复制

    万次阅读 2020-07-12 11:14:52
    java 字符串 复制Sometime back I was asked how to copy a String in java. As we know that String is an immutable object, so we can just assign one string to another for copying it. If the original ...
  • 函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。 裁判测试程序样例: #include <stdio.h> #define MAXN 20 void ...
  • strcpy函数复制字符串

    千次阅读 2019-08-03 16:00:44
    strcpy函数复制字符串的,拥有两个参数,一个是被复制字符串,另一个是新字符串。 原型:void strcpy(char *des,char *src,int len) #include <stdio.h> #include <string.h> void myStrNCpy(char *...
  • Strcpy与memcpy两函数的经典实现,哈哈,不过,不是偶写的!^_^…………   char *strcpy(char *des, const char *src){  assert((des != NULL) && (src != NULL));  char *add = des;...
  • 主函数负责定义两个字符数组并给其中一个赋值,通过调用函数实现将一个字符串复制到另一个字符数组中 #include <stdio.h> void f(char*str1,char*str2)//函数名为f,自定义字符串连接函数 { int i=0; while...
  • C语言程序设计-用函数实现字符串复制, 不允许用strcpy()函数.c
  • strcpy函数复制字符串

    千次阅读 2020-01-30 23:57:37
    strcpy(字符串复制) 定义:strcpy是一种C语言的标准库函数,strcpy把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char*。 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 471,264
精华内容 188,505
关键字:

字符串复制函数