26、 用C++编写一个字符串拷贝函数stringCopy( )

26、 用C++编写一个字符串拷贝函数stringCopy( ),第1张

char __cdecl stringCopy(char dst, const char src)

{

char cp = dst;

while( cp++ = src++ )

;

return( dst );

}

合并字符串的库函数是(),只写函数名即可。

strcpy(a,b) 将b复制到a中,连同"\0"一起复制。

1、合并字符串的C函数: strcat()

NAME

strcat, strncat - concatenate two strings

SYNOPSIS

#include <stringh>

char strcat(char dest, const char src);

char strncat(char dest, const char src, size_t n);

2、复制字符串的C函数:strcpy()

NAME

strcpy, strncpy - copy a string

SYNOPSIS

#include <stringh>

char strcpy(char dest, const char src);

char strncpy(char dest, const char src, size_t n);

扩展资料:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

-字符串

#include <stdioh>

// 拷贝

void strcopy(char  str1, char  str2)

{

    while(str2 != 0)

    {

        str1 ++ = str2++;

    }

    str1 = '\0';

}

// 拼接

void strCatStr(char  str1, char  str2)

{

    while(str1 != 0)

    {

        str1 ++;

    }

    while(str2 != 0)

    {

        str1 ++ = str2++;

    }

    str1 = '\0';

}

int main()

{

    char str[100] = {0};

    char str2[50] = "abc";

    strcopy(str, str2);

    printf("str = %s\n", str);

    strCatStr(str, str2);

    printf("str = %s\n", str);

    return 0;

}

运行结果:

字符串比较函数是strcmp(str1,str2);拷贝函数是strcpy(str1,str2)。

字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j",而字符串的零位正是它的长度;

如s[0]=10(※上述功能Ansistring没有。),这可以提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。

1、字符串定位函数:InStr,InStrRev,InStrB

2、字符串截取函数:Mid,Right,Left

3、字符串替换函数:Replace

4、字符串分割函数:Split

5、字符串格式化输出:Format

扩展资料:

字符串可以用“”(点)运算符连接。注意这里不能用“+”(加)运算符。更多信息参见字符串运算符。有很多实用函数来改变字符串。

普通函数见字符串函数一节,高级搜索和替换见正则表达式函数(两种风格:Perl 和 POSIX 扩展)。还有 URL 字符串函数,以及加密/解密字符串的函数(mcrypt 和 mhash)。最后,如果还是找不到想要的函数,参见字符类型函数。

char str_cpy(str,s)

{ int i;

for (i=0; i<(1+strlen(s)); i++) // +1意思是连终止符也一块抄

str[i]=s[i];

return str;

}

strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目录字符串中,当遇到字符串末尾的null字符(\0)时,它会删去该字符,并结束拷贝。

memcpy()函数可以拷贝任意类型的数据。因为并不是所有的数据都以null字符结束,所以你要为memcpy()函数指定要拷贝的字节数。

strcpy和memcpy主要有以下3方面的区别。

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。

在拷贝字符串时,通常都使用strcpy()函数;在拷贝其它数据(例如结构)时,通常都使用memcpy()函数。上代码你看看:

#include <stdio h>

#include <string h>

typedef struct cust-str {

int id ;

char last_name [20] ;

char first_name[l5];

} CUSTREC;

void main (void);

void main (void)

{

char src_string = "This is the source string" ;

char dest_string[50];

CUSTREC src_cust;

CUSTREC dest_cust;

printf("Hello! I'm going to copy src_string into dest_string!\n");

printf("Done! dest_string is: %s\n" ,

strcpy(dest_string, src_string)) ;

printf("Encore! Let's copy one CUSTREC to another \n") ;

prinft("I'll copy src_cust into dest_cust \n");

src_cust id = 1 ;

strcpy(src_cust last_name, "Strahan");

strcpy(src_cust first_name, "Troy");

memcpy(&dest_cust, &src_cust, sizeof(CUSTREC));

printf("Done! I just copied customer number # %d (%s %s) " ,

dest_cust id, dest_cust first_name, dest_cust last_name) ;

}

可以不需要返回值,同时若是通过具体数字限定大小,那么当数组大于此数字时,就无法通过完全复制。可以通过以下代码进行复制字符串:

void mystrcpy(char p,char p1)

{while (p1 != '\0'){(p++) = (p1++);}p = '\0';}

扩展资料

C语言字符数组

在C语言中,若将一个数组传入函数,那么在函数中改变数组的值也会影响主函数或者其他调用此函数中此数组的值。因此可以将C语言数组形容为双向的。

数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。

strcpy函数

strcpy 函数由于不对数组边界进行检查,而非常容易造成各种缓冲区溢出的漏洞。这些漏洞很容易被利用,而造成严重的系统问题。在使用 strcpy 函数时,要小心谨慎。

-c语言

-strcpy

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/11669602.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存