`
rys5851968
  • 浏览: 151548 次
社区版块
存档分类
最新评论

不调用库函数,实现字符串复制函数char * strcpy(char * dst, const char * src) C/C++软件开发求职面试题 必备考点(二)

 
阅读更多

直接来源码:

#incude <stdio.h>

char *strcpy(char *dst, const char *src)

{

if(dst == NULL || src == NULL)

return;

char *dstFirst = dst;

while( (*dst ++ = *src ++) != '\0');

return dstFirst;

}

int getLen(const char *str) //计算字符串长度,相当于strlen

{

int n = 0;

while(*str++ != '\0')

n++;

return n;

}

//测试部分

void main()

{

char testSrc[] = "zijuezizhi";

char testDst[20];

strcpy(testDst, testSrc);

printf("%s\n", testDst);

}

有几点探讨一下:

1,

while( (*dst ++ = *src ++) != '\0');

关于这句话的执行顺序问题,将*src的值赋给左边的*dst,然后判断*dst是否等于'\0',如果不等于,则dst++,src++,即指针指向下一字符。参考http://topic.csdn.net/u/20120217/19/c6341524-4be1-4ddc-b3f3-96802f137f4a.html《C程序设计语言》第二版 K&R 机械工业出版社 2.10

赋值运算符与表达式:赋值表达式的类型是它的左操作数的类型,其值是赋值操作完成后的值。

现在的问题是,当程序跳出后,src究竟指向哪?也就是当*src = '\0'时,还执行src++ dst++吗?这个问题答案参见我后来写的http://blog.csdn.net/yanzi1225627/article/details/7843672

因此和"\0"比较的是赋值结束后的值,这里究竟是*dst还是*src,姑且认为是*dst吧!有知道的大神赐教下....当执行到最后,*src='\0'时,将'\0'赋给左边的,然后才比较结束。也就是strcpy这个函数,不仅赋值,而且把字符串结束副业赋了过去。

2,注意srcpy这个函数,里面的dst是要求预先申请类存的。char testDst[20]可以写成char testDst[strlen(testSrc) + 1],也可以写成char testDst[sizeof(testSrc)],如果这点有疑惑可以看我的第一篇帖子http://blog.csdn.net/yanzi1225627/article/details/7838877

也可以写成char *testDst = malloc(sizeof(testSrc))或者malloc(strlen(testSrc)+1),来申请内存。

但是如果 char *testSrc = "zijuezizhi",则只能借助strlen来确定内存大小。

分享到:
评论

相关推荐

    C语言库函数之字符串

    本章节将详细介绍C语言标准库中的一些常见字符串函数及其使用方法。 #### 二、字符串转换函数 1. **`atof`: 字符串转浮点型函数** - **函数原型**: ```c float atof(const char *str); ``` - **头文件**: `...

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

    `strcpy`是C语言中一个非常重要的字符串操作函数,它用于将一个源字符串复制到目标字符串中,其原型通常定义在`&lt;string.h&gt;`头文件中,形如:`char *strcpy(char *dest, const char *src);`。函数的主要功能是从`src`...

    不调用C库实现字符串的拷贝

    已知strcpy函数的原型是char *strcpy(char *strDest,const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。不调用C的字符串库函数,编写函数strcpy.

    C语言程序设计-用函数实现字符串的复制, 不允许用strcpy()函数.c

    C语言程序设计-用函数实现字符串的复制, 不允许用strcpy()函数.c

    C/C++常用库函数【肝就完了】

    根据给定文件的信息,我们可以总结出以下详细的C/C++常用库函数知识点: ### 1. `&lt;string.h&gt;` — 字符串处理函数 #### `strcpy()` — 字符串拷贝 **原型**: `char* strcpy(char* dest, const char* src);` **功能...

    不使用库函数strcpy(),编程实现将字符串b复制到字符串a中。.c

    不使用库函数strcpy(),编程实现将字符串b复制到字符串a中,不使用库函数strcpy(),编程实现将字符串b复制到字符串a中,不使用库函数strcpy(),编程实现将字符串b复制到字符串a中,不使用库函数strcpy(),编程实现将...

    C/C++程序设计员应聘常见面试试题深入剖析

    如果面试者指出 strcpy(string, str1)调用使得从 str1 内存起复制到 string 内存起所复制的字节数具有不确定性可以给 7 分,在此基础上指出库函数 strcpy 工作方式的给 10 分; * 对试题 3,if(strlen(str1) )应改为...

    C语言中常用的字符串处理函数

    C语言提供了一系列内置的字符串处理函数,这些函数能够帮助开发者高效地进行字符串的创建、复制、比较、搜索、修改等操作。以下是对给定文件中提到的常用字符串处理函数的详细解析: 1. **`memset`**: 函数原型为`...

    一些有关字符串 的常考面试题

    编写一个字符串复制函数,不允许调用C/C++的标准库函数`strcpy`。 **实现思路**: 1. **检查参数有效性**:确保目标和源字符串指针都不为空。 2. **逐字符复制**:从源字符串复制字符到目标字符串,直到遇到字符串...

    C/C++ 标准库函数 (中文版)

    C/C++标准库函数手册是C/C++程序员必备的参考资料,它详细地介绍了C/C++语言中各种标准库函数的用途、语法和使用方式。标准库中包含了输入输出处理、字符串操作、数学计算、时间日期处理、内存管理等函数,此外C++...

    数据结构-c语言-带main函数-串2-串复制-根据标准库函数strcpy ()和定义求串复制函数的两种方法。

    总结来说,无论是使用标准库函数`strcpy()`还是自定义函数`mystrcpy()`,都能实现字符串的复制。了解这些基础知识对于理解和编写C语言的字符串处理代码至关重要。同时,掌握如何在CFree这样的集成开发环境中进行实践...

    C++常用标准库函数.pdf

    C++标准库函数是C++语言中提供的一组函数,用于实现各种常见的操作,例如数学计算、字符串处理、内存管理等。这些函数可以帮助开发者快速实现常见的功能,提高开发效率。 一、数学函数 C++标准库提供了一组数学...

    c的几个string库函数简单实现

    strcpy函数用于将一个字符串复制到另一个字符串中,函数原型为`char *strcpy(char *dest, const char *src);`。在实现中,我们可以使用循环来复制字符串,直到遇到结束符为止。例如,fun4函数和fun7函数都是复制字符...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、库函数等各个方面的基础知识,介绍了面向对象编程基本概念,包括如何实现继承、多态和封装等。还介绍了排序...

    [面试/笔试系列8]C/C++程序员应聘常见面试题

    根据给定文件的信息,本文将深入探讨C/C++程序员应聘过程中常见的面试题,并通过具体的示例来解析每个问题的关键技术和思维挑战。 ### 一、基本功考察:字符串处理 #### (1) 字符串拷贝函数`strcpy` 面试题经常...

    C与C++面试题.doc

    不使用C++/C的字符串库函数,请编写一个`strcpy`函数。 **解答**: 此题主要考察的是如何手动实现字符串复制的功能,同时避免使用标准库函数如`memcpy`或`strncpy`等。下面是一个详细的实现示例: ```c char* ...

    在C语言函数中调用汇编语言程序实现字符串的拷贝

    在C语言中,我们通常使用标准库函数如`strcpy`来拷贝字符串。然而,在某些特定情况下,如优化性能或理解底层操作,我们可能需要直接调用汇编语言程序来实现这一功能。在这个主题中,我们将探讨如何在C语言函数中嵌入...

    Linux下C语言将字符串格式(char*)或char[]的MAC地址转换为十六进制数组

    Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组,代码简洁可直接使用

    C语言面试题.pdf

    本文总结了C语言面试题的重要知识点,涵盖了strcpy函数的实现、字符串操作、数组越界、库函数的工作方式等方面。 一、strcpy函数的实现 strcpy函数是C语言中最基本的字符串拷贝函数,但其实现却隐藏着许多玄机。...

Global site tag (gtag.js) - Google Analytics