博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
strcpy、strcat、strstr的实现
阅读量:7066 次
发布时间:2019-06-28

本文共 1836 字,大约阅读时间需要 6 分钟。

参考:www.cnblogs.com/carsonzhu/p/5277036.html

字符串拷贝函数strcpy的原型:

char *strcpy(char *strDest,const char *strSrc);

strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性:

    char str[20];

    int length = strlen( strcpy(str, “Hello World”) );

作用:为了生成链式表达式。

在面试中常会遇到写 strcpy,以及相关的问题,比如说返回值的作用等。

char * strcpy( char *strDest, const char *strSrc ){ assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) != '\0' ); return address;}char * strcpy(char* dst,const char* src){    assert((dst!=NULL)&&(src!=NULL));    char* cp=dst;    while(*src!='\0')    {        *dst=*src;        src++;        dst++;    }    *dst='\0';    return cp;} char* strcat ( char * dst , const char * src ){    char * cp = dst;    while( *cp )        cp++;                       /* find end of dst */    while(*src!='\0')    {        *cp++=*src++;    }    *cp='\0';    return dst;                  /* return dst */}   int strcmp(const char* str1, const char* str2){    int ret = 0;    while(!(ret=*(unsigned char*)str1-*(unsigned char*)str2) && *str1)    {        str1++;        str2++    }    if (ret < 0)  { return -1; }    else if (ret > 0)  { return 1; }    return 0;} char *strstr( const char *s1, const char *s2 ){    int len2;    if ( !(len2 = strlen(s2)) )        return (char *)s1;    for ( ; *s1; ++s1 )    {        if ( *s1 == *s2 && strncmp( s1, s2, len2 )==0 )            return (char *)s1;    }    return NULL;}

  要注意内存重叠时的问题。

:将两个char类型连接

char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);
结果放在d中
printf("%s",d);
输出 d 为 GoldenGlobalView (中间无空格)
d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。
返回指向d的 。

:比较两个字符串str1和str2

若str1=str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。

:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。  

转载于:https://www.cnblogs.com/htj10/p/10651258.html

你可能感兴趣的文章
节日营销!这样搞-App运营日常
查看>>
谁是“少数幸福的人”?
查看>>
坦克大战--Java类型 ---- (2)按键设置和用户名的输入
查看>>
手机操作系统:自主力量能否崛起
查看>>
Shell在大数据时代的魅力:从一道百度大数据面试题想到的点滴
查看>>
说说參数传递(泛型托付)
查看>>
CentOS6.10下安装mysql-5.7.24
查看>>
【C#公共帮助类】 ToolsHelper帮助类
查看>>
八皇后问题
查看>>
切蛋糕
查看>>
关于对于CSS的字体单位
查看>>
TCP协议学习总结(上)
查看>>
敏捷 扑克上的时间估算(转)
查看>>
从JDBC程序看为什么需要Mybatis
查看>>
jQuery Ajax
查看>>
压缩感知中的数学知识:稀疏、范数、符号arg min
查看>>
《JavaScript高级程序设计》笔记
查看>>
刚刚在园里看到的一个简单的做连接字符串的方法.
查看>>
JQ_简单瀑布流
查看>>
测试管理-测试问题监控
查看>>