【C语言】实现strcat

Strcat函数原型如下:

char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{
       char * address = strDest;             //该语句若放在assert之后,编译出错
       assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非0断言
       while(*strDest)             //是while(*strDest!=’/0’)的简化形式
       {                        //若使用while(*strDest++),则会出错,因为++是不受循环
              strDest++;               //约束的。所以要在循环体内++;因为要是*strDest最后指
       }                        //向该字符串的结束标志’/0’。
       while(*strDest++ = *strScr++) //是while((*strDest++ = *strScr++)!=’/0’)的简化形式
       {
              NULL;                 //该循环条件内可以用++,
       }                          //此处可以加语句*strDest=’/0’;有无必要?
return address;               //为了实现链式操作,将目的地址返回
}

以下是在VC6.0中调试的例子,函数名用my_strcat代替

#include <stdio.h>
#include <assert.h>
char *my_strcata(char *strDest,const char *strScr)
{
       char * address = strDest;
       assert((strDest != NULL) && (strScr != NULL));
       while(*strDest)
       {
              strDest++;
       }
       while(*strDest++ = *strScr++)
       {
              NULL;
       }
       return address;
}
 
void main()
{
       char str1[100]={"i love"};
       char str2[50]={"China"};
       printf("%s/n",my_strcata(str1,str2));
}
时间: 2024-10-15 21:44:32

【C语言】实现strcat的相关文章

C语言简单strcat和strcmp的实现

对于C标准库中的字符串处理函数应该平常用的比较多:简单实现strcat和strcmp _strcpy: 1 char *_strcpy(char *dest, char *src) 2 { 3 char *buf = dest; 4 while((*dest++ = *src++)) 5 ; 6 return buf; 7 } _strcmp: 1 int _strcmp(char *str1, char *str2) 2 { 3 if(str1 == NULL || str2 == NULL)

C语言实现strcat

首先看看代码: 1 #ifndef STRCAT_H 2 #define STRCAT_H 3 4 /******************************************************************* 5 原型:extern char *strcat(char *dest,char *src); 6 7 strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部: 8 dest最后的结束字符NULL会被覆盖掉,并在连接后的字符串的尾部再增

【C语言】strcat函数的实现

strcat: 将两个char类型链接. 返回指向字符串的指针. 然后我们简单实现一下这个函数: <span style="font-size:18px;">#include<stdio.h> #include<assert.h> char * my_strcat(char *str1,char const *str2) { char* tmp=str1; assert(str1); assert(str2); while(*str1!='\0')

makefile中=、:=和+=的区别

经常有人分不清= .:=和+=的区别  这里我总结下做下详细的分析: 首先你得清楚makefile的运行环境,因为我是linux系统,那么我得运行环境是shell 在Linux的shell里,shell只认识字符串,所以你就不要说整形什么的了.说值也不贴切. 先看+=是什么意思? 因为shell只认识字符串,所以这里应该不难联想到+=就是字符串连接的意思.相当于c语言的  strcat 举个例子: x本来是  U: x += SB: 那么运行结果就是  x为USB: 接着理解:=和= 这个是很常

Redis数据结构之简单动态字符串SDS

Redis的底层数据结构非常多,其中包括SDS.ZipList.SkipList.LinkedList.HashTable.Intset等.如果你对Redis的理解还只停留在get.set的水平的话,是远远不足以应对面试提问的.本文简单介绍了Redis底层最重要的数据结构 - 简单动态字符串(SDS) Redis使用C语言开发,但并没有使用C语言传统的字符串表示(以空字符结尾的字节数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串的(simple dynamic string,SDS

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

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

转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 作者:jcsu C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    

C语言实现strlen()4种方法和strcat()3种方法

#include <stdio.h> #include <assert.h> #if 0 // 默认使用法4 // 法1 int strlen(const char* str) { int n; // const char *p = str; //测试这句,这个语句不需要,因为我实参是指针,形参指针改变指向不影响实参指向 for(n = 0; *str != '\0'; n++) { str++; } return n; } #elif 0 // 法2 int strlen(con

C语言strcat,ctrcpy函数原型和改进

函数原型如下: char *strcpy(char *strDest, const char *strSrc) { char *address=strDest; assert((strDest!=NULL) && (strSrc!=NULL)); while(*strSrc!='\0') { *strDest++=*strSrc++; } *strDest='\0'; return address; } char *strcat(char *strDest, const char *str

C语言strcat()函数:连接字符串

头文件:#include <string.h> strcat() 函数用来连接字符串,其原型为:    char *strcat(char *dest, const char *src); [参数]dest 为目的字符串指针,src 为源字符串指针. strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部:dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL. 注意:dest 与 src 所指的内存空间不能重叠,且 dest 要