• strcpy的返回值有什么用?


    在面试中常会遇到写 strcpy,以及相关的问题,比如说返回值的作用等。
    //z 2012-07-06 10:23:32 AM IS2120@CSDN.T1445120086
    以下为微软clib中的strcpy的写法。
    /***
    *char *strcpy(dst, src) - copy one string over another
    *
    *Purpose:
    *       Copies the string src into the spot specified by
    *       dest; assumes enough room.
    *
    *Entry:
    *       char * dst - string over which "src" is to be copied
    *       const char * src - string to be copied over "dst"
    *
    *Exit:
    *       The address of "dst"
    *
    *Exceptions:
    *******************************************************************************/
    (T1445120086)
    char * __cdecl strcpy(char * dst, const char * src)
    {
            char * cp = dst;

            while( *cp++ = *src++ )
                    ;               /* Copy src over dst */

            return( dst );
    }

    为什么返回dst?
    【建议6-2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。
    例如字符串拷贝函数strcpy 的原型:
    char *strcpy(char *strDest,const char *strSrc);
    strcpy 函数将strSrc 拷贝至输出参数strDest 中,同时函数的返回值又是strDest。
    这样做并非多此一举,可以获得如下灵活性:
    char str[20];
    int length = strlen( strcpy(str, “Hello World”) );

    strncpy的一种实现
    man里的原文:
    A simple implementation of strncpy() might be:

               char*
               strncpy(char *dest, const char *src, size_t n){
                   size_t i;

                   for (i = 0 ; i < n && src[i] != '/0' ; i++)
                       dest[i] = src[i];
                   for ( ; i < n ; i++)
                       dest[i] = '/0';

                   return dest;
               }
    //z 2012-07-06 10:23:32 AM IS2120@CSDN.T1445120086

  • 相关阅读:
    如何使用EF?
    在一般处理程序中使用session
    C# base64 加密解密
    C#操作WMI文章汇总
    ASP.NET图片防盗链(使用一般处理程序)
    前台生成验证码
    .正则
    iframe标签的初试
    sqli-labs5-10(全程sqlmap)
    sql注入文件写入和读取
  • 原文地址:https://www.cnblogs.com/IS2120/p/6746038.html
Copyright © 2020-2023  润新知