strcat实现

//将源字符串加const,表明其为输入参数
char*strcat(char*strDest,constchar*strSrc)
{
//后文returnaddress,故不能放在assert断言之后声明address
char*address=strDest;
assert((strDest!=NULL)&&(strSrc!=NULL));//对源地址和目的地址加非0断言
while(*strDest)//是while(*strDest!=’\0’)的简化形式
{
//若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
//那么strDest将指向‘\0‘的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
//向该字符串的结束标志’\0’。
strDest++;
}

while(*strDest++=*strSrc++)
{
NULL;//该循环条件内可以用++,
}//此处可以加语句*strDest=’\0’;无必要
returnaddress;//为了实现链式操作,将目的地址返回
}
时间: 2024-10-31 01:21:36

strcat实现的相关文章

连接函数strcat与strncat

题目: 编写程序实现函数strcat和strncat. 题目分析: strcat的主要是将一个字符串连接到另一个字符串之后的位置,例如:将字符串"def"拷贝到字符串"abc"之后,得到新的字符串为"abcdef". strncat将一个字符串的几个字符连接到另一个字符串之后,可以限制连接的字符串数. 下面是自定义my_strcat的实现: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.

C语言::模拟实现strcat函数

题目要求 编写一个C语言程序模拟实现strcat函数. (我们不妨先模拟实现一下strcat函数,然后再对照一下string.h库函数中strcat函数代码的实现,与大师肩并肩.) 算法分析 strcat函数功能:将两个字符串连接起来,最终返回连接后字符串的首地址. strcat函数原型:char *strcat(char *dest,const char *src); 我们清楚地了解了strcat函数功能和原型之后,就很容易分析出算法... 算法总结 第一步:将dest指向的内容循环遍历至'\

strcpy和strcat易忽略点

首先来看一段C程序: 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 void GetMem(char*& pstr){//注意必须要用指针的指针或者指针的引用.如果传本身,返回的已经是空悬指针了 6 pstr=(char*)malloc(20); 7 } 8 9 int main(){ 10 char* str; 11 GetMem(str); 12 13 strcpy(

strlen(); strcpy(); strcat(); strcmp() ---笔记

指针小知识点: int a =10; int *p=&a; int *q=p;        //p中保存的是a的地址 int *q=p;       //将p的值赋给q 作用是让q也指向a strlen( ); 求字符串的长度 strcpy( ); 复制字符串 strcat( ); 连接字符串 strcmp( ); 字符串大小的比较 1 typedef unsigned int size_t 2 3 size_t my_strlen (const char *str) // strlen()

strcat与strcpy

前几天刚有点认识了strlen和sizeof,今天又有点认识了strcpy和strcat. 在vc2010环境下 1 strcpy strcpy(p,q),p要么为数组,要么为空指针,要是为空指针操作后内存中存储的形式和数组一样,空处为\0,非空指针(分配了内存)报错. 2 strcat strcat(p.q),p要么为数组,要么为strcpy后产生的指针,若为指针(申请了内存)非空报错,若空 (申请了内存)不报错但存在部分乱码. 网上对此有各种说法,但为了程序的可维护性和移植性,第一个参数尽量

Strcat函数原型

//将源字符串加const,表明其为输入参数char* strcat(char* strDest , const char*s trSrc){ //后文return address,故不能放在assert断言之后声明address char* address=strDest; assert( (strDest!=NULL)&&(strSrc!=NULL) );//对源地址和目的地址加非0断言 while(*strDest)//是while(*strDest!=’\0’)的简化形式 { //

strcat()的编写

1.strcat() #include <windows.h> #include <assert.h> #include <iostream> //strcat()函数分4部分写 //1.定义4个char* //2.变量检查不为空assert() //3.指针指向第一个字符串的末尾 //4.逐个字符的赋值 char *strcat(char *strDest, char *strSrc) { char *address = strDest; assert( (strDe

教教大家一些strcpy,strcmp,strcat,strlen函数的写法

VC源码: strcmp函数的写法: #include<stdio.h> #include<string.h> int strcmp1(char* a, char* b) { for(;*a==*b;a++,b++) if(*a!='\0') return 0; return *a - *b; } main() {  int l; char a[10]={"db"}; char b[10]={"cb"}; l=strcmp1(a,b); pr

strlen sizeof strcat strcpy区别

strlen(p): 能计算出p指向字符串的长度(以当前p的位置开始),不包含终止字符'\0': p可以声明为char* p或者char p[],这两种形式strlen均能正确计算. sizeof(p): sizeof是一个操作符,非函数,其值在编译期确定,因此当p声明为某一类型指针时,sizeof在编译时并不能确定指向内容的大小,故返回的是指针类型本身的大小: 当p声明为某一类型数组时,sizeof在编译时即可确定指向内容的大小,故返回的是数组所占容量: strcat(p1,p2)和strcp

strcat 的自我延伸实现(strncat)!!

前两天上课的时候我们老师给我们讲了strcat的自我实现,当时听着很复杂,不过后来老师又把它布置成了作业.今天写完作业后,我有一种醍醐灌顶的感觉.估计老师的用意就在此了. 下面我将写出我自己实现strcat的代码,并且这个要追加的字符长度是由自己控制的. 听起来还不错,是不是...(*^__^*) 嘻嘻-- #include<stdio.h> #include<assert.h> char *my_strncat(char *dest, const char *src, unsig