常见函数strlen、strcmp、strstr原型实现

数组元素的结束符为‘\0‘,串的结束符为NULL

一、strlen

#include
<iostream>

using
namespace
std;

long h_strlen(constchar*str){

assert(str!=NULL);

const
char *s = str;

while (*s++);

return (s - str -
1);

}

int main(int argc,
const
char * argv[])

{

char s1[] =
"hello";

char s2[] =
"123";

int s1_len =
h_strlen(s1);

int s2_len =
h_strlen(s2);

printf("s1_len:%d\n",s1_len);

printf("s2_len:%d\n",s2_len);

}

二、strstr

// 在字符串s1中寻找字符串2,若找到返回位置,否则返回Null

char *h_strstr(char*str,char *subStr){

while (*str !=‘\0‘) {

char *p = str;

char *q = subStr;

char *res =NULL;

if (*p == *q) {

res = p;

while (*q !=‘\0‘ && *p == *q){

p++;

q++;

}

if (*q ==‘\0‘)

returnres;

}

str++;

}

}

二、strcmp

long h_strcmp(constchar *src,constchar
*dst){

assert(src != NULL&& dst !=
NULL);

while (*src && *dst && (*src ==*dst)) {

src++;

dst++;

}

return (*dst - *src);

}

时间: 2024-08-26 18:53:14

常见函数strlen、strcmp、strstr原型实现的相关文章

C语言中strcpy,strcmp,strlen,strcat函数原型

//strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char *strSrc) { char *res=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest)strDest++; while(*strDest=*strSrc) { strDest++; strSrc++; }

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

strlen strncat strstr 三种库函数的代码实现

首先我们来看strlen函数,它主要是求一个字符串的长度,所以返回的应该是int型类型,其主要方法是将字符串从头到尾进行遍历时进行计数,因此实现起来并不是很难,其主要函数代码如下: int length(char *p) { int len = 0; while (*p != 0) { len++; p++; } return len; } 因为字符长度是不包括'\0',所以返回时不用进行+1操作. 然后是关于strncat函数的实现,它主要是对两个字符串进行有个数的连接,注意,是有个数的连接,

【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)

strcpy 拷贝源字符串到子字符串,包括'\0'. 代码实现: char* strcpy(char* dst,const char* src) {     assert(src);     char* ret = dst;     while (*src)     {         *dst = *src;         src++;         dst++;     }     *dst = '\0';     return ret; } 2.strncpy: strncpy与str

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 str

第四天:C基础之字符与字符串

今天老师主要是通过练习程序来讲解字符和字符串,所以这次日志也是通过分析代码来总结所学知识. 首先是复制字符 ,要注意'\0'的存在.使用循环时,一般用‘\0’进行退出判断条件. #include<stdio.h> int copy(char *n,char *m); int main() { char arr[] = {"hello"}; char brr[10]; printf("%d\n",sizeof(arr)); /* int i; for(i=

strlen() strcpy() strcat() strcmp()实现

strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数. 1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\0开始的地方.返回的是拼接后字符的首地址.并不检查第一个数组的大小是否可以容纳第二个字符串.如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元. 2.str

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