c语言实现完美strcpy,strlen,strcmp,strcat

相信不少人面试的时候,会遇到面试官让你写出strcmp, strlen, strcpy,strcat等函数,下面给出比较完美的实现,自行把握里面一些关键的点,例如参数的判断,const参数,指针操作等等。

//strcpy函数:
char *strcpy(char *strDest, const char *strSrc)
{
    if (strDest == NULL || strSrc == NULL)
        return NULL;
    if (strDest == strSrc)
        return strDest;
    char *tmpStr = strDest;
    while( (*strDest++ = *strSrc++) != ‘\0’);
    *strDest = '/0';
    return tmpStr;
}

//strlen函数:
int strlen(const char *str)
{
	int len = 0;
	if(str == NULL) {
		return 0;
	}
	while(*str++) {
		len++;
	}
	return len;
}

//strcat函数:
char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{
	char *tmpStr = strDest;
	if ((strDest != NULL) && (strScr != NULL)) {
		return NULL;
	}
	while(*strDest) {
		strDest++;
	}
	while(*strDest++ = *strScr++);
	return tmpStr;
}

//strcmp函数:
int strcmp(const char *str1,const char *str2)
{
	int len = 0;
	assert((str1 != '/0') && (str2 != '/0'));
	while(*str1 && *str2 && (*str1 == *str2))
	{
		str1++;
		str2++;
	}
	return *str1-*str2;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-21 20:19:42

c语言实现完美strcpy,strlen,strcmp,strcat的相关文章

strcpy,strncpy, strlen, strcmp strcat函数实现

#include <stdio.h> #include <assert.h> char* strcpy(char* strDest, const char* strSrc) { assert((strDest != NULL) && (strSrc != NULL)); char* address = strDest; while((*strDest++ = *strSrc++) != '\0') NULL; return address; } char* strn

strcpy,strlen,strcmp实现

1.strcpy的实现 char * my_strcpy(char * s1, char * s2) { assert(s1 != NULL&&s2 != NULL); char *res = s1; while ((*(res++) = *(s2++))!='\0'); return res; } 2.strlen的实现 int my_strlen(char * s) { assert(s != NULL); int num = 0; while (*(s++)) ++num; retu

转: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){    

笔试算法题(04):实现 string &amp; memcpy &amp; strcpy &amp; strlen

出题:请实现给定String的类定义: 分析:注意检查标准类构造注意事项: 解题: 1 #include <stdio.h> 2 #include <string.h> 3 /** 4 * 检查是否需要构造函数 5 * 检查是否需要无参构造函数 6 * 检查是否需要成员变量(函数)私有 7 * 检查是否需要在构造函数预初始化成员变量 8 * 检查是否需要析构函数 9 * 检查是否需要虚拟析构函数 10 * 检查是否需要复制构造函数(参数为const) 11 * 检查是否需要赋值重载

教教大家一些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

C基础--字符串操作函数(strlen,strcpy,strcmp,strcat,strstr,strtok)

#include <stdio.h> #include <string.h> int main(void) { //char dest[10]; //#define NULL (void *)0 //char *dest = NULL; //dest是野指针,指向的区域没有可读写空间 //char dest[3]; //char src[] = "hello"; char str1[10] = "hello"; //char str2[10]

C字符串——库函数系列(strlen、strcat、strcpy、strcmp)

一定义: 字符串:字符串是由零个或者多个字符组成的有限串行: 子串:字符串中任意个连续的字符组成的子序列,并规定空串是任意串的子串,字符串本身也是子串之一:“abcdefg”,”abc“就是其子串,但是“ade”不属于子串范围. 子序列:不要求字符连续,但是其顺序与其在主串中相一致:上例中,“abc”与“ade”都属于子序列范围: 二:C风格字符串包括两种: 1)字符串常量---以双引号括起来的字符序列,编译器自动在其末尾添加一个空字符. 2)末尾添加了’0‘的字符数组: char ch1[]=

strcpy,strlen, strcat, strcmp函数,strlen函数和sizeof的区别

//计算字符串实际长度        //strlen()函数:当遇到'\0'时,计算结束,'\0'不计入长度之内,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止//    char string[] = "I Love You!";//    unsigned long len = strlen(string);//    printf("len = %lu\n", len);  //11//    //    stri

转:strcat与strcpy与strcmp与strlen

转自:http://blog.chinaunix.net/uid-24194439-id-90782.html strcat 原型:extern char *strcat(char *dest,char *src); 用法:#include <string.h> 功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'. 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. 举例: // str