`
javasogo
  • 浏览: 1835080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

strcpy的返回值有什么用?

 
阅读更多

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

以下为微软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:
*******************************************************************************/

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;
}

分享到:
评论

相关推荐

    strcpy函数的用法[总结].pdf

    strcpy 函数的用法总结 strcpy 函数是 C 语言标准库中...3. 使用 strcpy 函数时,需要检查返回值,以避免出现错误。 strcpy 函数是 C 语言标准库中的一个重要函数,需要正确地实现和使用,以避免出现错误和内存泄漏。

    出现频率最高的笔试题strcpy写法

    2. **返回值的使用**:`strcpy`函数返回`strDestCopy`是为了支持链式表达式,使得在调用后可以直接进行其他操作,如计算字符串长度。错误的返回值处理,如返回`new string("Invalid argument(s)")`会导致内存泄漏,...

    strcpy原型

    1. **内存溢出**: 使用 `strcpy` 时需要注意目标字符串有足够的空间来存放源字符串,否则会导致内存溢出。 2. **字符串长度**: 在复制过程中没有检查目标字符串的空间大小,因此可能会导致溢出。实际应用中应确保...

    strcpy函数

    因此,开发者在使用`strcpy`时必须非常小心,确保目标缓冲区足够大,或者使用更安全的替代方案,如`strncpy`函数,该函数允许指定最大复制的字符数量,从而避免溢出问题。 总之,`strcpy_v1`函数提供了一个相对安全...

    strcpy 解析,很有用

    ### strcpy函数解析与应用 在计算机编程中,字符串操作是必不可少的一部分,特别是在C语言中,字符串处理函数的应用非常广泛。...正确使用`strcpy`并了解其内部实现对于编写安全可靠的程序至关重要。

    strcpy的详细简绍

    `strcpy`函数是C语言标准库中用于字符串复制的一个关键函数。...在实际编程中,应考虑使用更安全的替代品,如`strncpy`(尽管它也有其自身的局限),或者在C++中使用`std::string`类,以获得更好的内存管理和安全特性。

    C学习深入学习总结

    你是否经常使用? 5 2.5 定义在不同源文件中的static全局变量,编译器是否允许他们的变量名称相同? 5 2.6 你是否知道auto、extern、register、volatile、restrict、inline的用法? 6 3 const 6 3.1 你是否经常使用...

    strcpy的使用 (2).pdf

    "strcpy 函数的使用注意事项" strcpy 函数是 C 语言中最常用的字符串复制函数,但是在使用时需要注意一些重要的事项,以免出现缓冲溢出和其他严重问题。在这里,我们将详细地介绍 strcpy 函数的使用注意事项和如何...

    C程序_不调用库函数,实现strcpy函数

    在深入探讨如何在C语言中不使用标准库函数实现`strcpy`函数之前,我们先来了解下`strcpy`函数的基本概念及其在标准C库中的作用。`strcpy`是C语言中一个非常重要的字符串操作函数,它用于将一个源字符串复制到目标...

    C 语言编程常见问题解答.chm

    它们适合于在哪种情况下使用? 6.2 怎样删去字符串尾部的空格? 6.3 怎样删去字符串头部的空格? 6.4 怎样使字符串右对齐? 6.5 怎样将字符串打印成指定长度? 6.6 怎样拷贝字符串的一部分? 6.7 怎样将...

    标准C语言程序设计及应用习题及答案.pdf

    1. C语言中,main 函数的返回值类型是什么?(Answer: int) 计算题 1. C语言中,以下表达式的值是什么?(Answer: 47) 2. C语言中,以下表达式的值是什么?(Answer: 38) 程序分析题 1. C语言中,以下程序的...

    strcpy开发教程.docx

    ### strcpy函数详解 #### 一、strcpy函数的基本概念 `strcpy`函数是C语言标准库中的...以上示例首先使用`strcpy`将`str1`复制到`dest`中,然后使用`strcat`将`str2`追加到`dest`末尾,最终打印出拼接后的完整字符串。

    strstr和strcpy函数实现

    ### strstr和strcpy函数实现 在计算机编程领域,字符串处理是不可或缺的一部分。无论是数据验证、文本分析还是用户界面设计,字符串操作都是基础中的基础。本文将详细介绍`strstr`和`strcpy`两个常用字符串处理函数...

    C语言中strcpy_strcmp_strlen_strcat函数原型

    根据提供的文件信息,本文将详细解释C语言中的四个字符串处理函数:`strcpy`, `strcmp`, `strlen`, 和 `strcat` 的功能与实现原理。这些函数在日常编程中极为常见,掌握它们对于深入理解C语言及其字符串操作至关重要...

    中兴通讯C/C++笔试题及答案

    笔试题目涵盖了 BOOL、float、指针变量与“零值”比较的if语句、sizeof的使用、头文件中的ifndef/define/endif的作用、const的用途、extern "C"的作用、for循环的优缺点、内存管理和strcpy函数的实现等方面。...

    编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数[文].pdf

    strcpy 函数返回 char * 类型的返回值,是为了实现链式表达式。例如,`int length = strlen( strcpy( strDest, “hello world” ) );`。 在实现 strcpy 函数时,需要注意以下几点: 1. 检查指针的有效性,防止空...

    你必须知道的495个C语言问题

    5.14 为什么有那么多关于空指针的疑惑?为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为...

    C语言FAQ 常见问题列表

    o 6.11 为什么有那么多关于空指针的疑惑?为什么这些问题如此经常地出现? o 6.12 我很困惑。我就是不能理解这些空指针一类的东西。 o 6.13 考虑到有关空指针的所有这些困惑, 难道把要求它们内部表达都必须为 0 ...

    C++中strcpy函数的实现

    2. 返回值的用途:`strcpy`返回`strDest`的原始值,这样可以方便地进行链式操作,例如计算复制后的字符串长度或分配内存后立即复制字符串。 3. 逻辑思维的严谨性:保存`strDest`的原始值是为了在循环结束后能够正确...

Global site tag (gtag.js) - Google Analytics