关于strcpy的解析?

1,首先看一年内核关于strcpy函数的实现:

strcpy()函数的参数是指向存放目的字符串和指向源字符串的指针,

函数的功能就是将源字符串传递给指向存放目的字符串的指针。

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

{ //tmp存放指向目的字符串的首地址,再返回时,返回的是指向拷贝完成的字符串的地址。

char *tmp = dest;

//拷贝的过程,只要一次访问的源字符串不为结束符就继续拷贝的过程。

while ((*dest++ = *src++) != ‘\0‘)

/* nothing */;

return tmp;//返回指向dest字符串的指针。

}

2,strncpy函数和strcpy的区别以及相同点。

char *strncpy(char *dest, const char *src, size_t count)

{ //tmp存放指向目的字符串的首地址,再返回时,返回的是指向拷贝完成的字符串的地址。

char *tmp = dest;

//count指代要拷贝的数目

while (count) {

if ((*tmp = *src) != 0)

src++;

tmp++;

count--;//每靠背一次就将需要拷贝的数量减1

}

return dest;//返回指向dest字符串的首地址。

}

char *strncpy指代要接收返回的已经拷贝完后的字符串。

这个函数在内核实现上市很简单的,但是在面试的时候,很多面试官都比较喜欢问这个问题,

其中需要注意的是:为什么加一个char *的返回类型,加char *这个返回类型是为了接受返回

的字符串。

时间: 2025-01-06 23:52:33

关于strcpy的解析?的相关文章

闲云控制台(一)控制台命令解析框架

发布闲云控制台连载系列,会不定期加入新功能~ 先发一个命令解析的框架 /************************************************** *******************闲云万能控制台********************* ********* ********* 作者: 闲云野鹤 ********* QQ: 836663997 ********* QQ群: 116920287 欢迎加入 ********* 邮箱: [email protected]

GlusterFS源码解析 —— GlusterFS日志解析

Logging.c: /* Copyright (c) 2008-2012 Red Hat, Inc. <http://www.redhat.com> This file is part of GlusterFS. This file is licensed to you under your choice of the GNU Lesser General Public License, version 3 or any later version (LGPLv3 or later), or

main函数的实现解析

main函数的传参的实现,其实也是一个解析字符串的过程:将每个word后一个空格改为“/0”,将单词提取出来. 就是这么简单. 废话不多说,直接上代码: 1 #include<stdio.h> 2 #include<string.h> 3 void shell_parse(char *sbuf) 4 { 5 char mbuf[50]; 6 sprintf(mbuf,"%s",sbuf); 7 char *buf=mbuf;//两次转换,得到一个能++的指针 8

json封装与解析

#include <iostream> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/json_parser.hpp> #include <sstream> #include <string> using namespace std; //stringstream只是一个中转的作用,因为write_json还是read_json操作的是stringst

无法解析的外部符号 _ ,该符号在函数 &quot; __main中被引用 &amp;&amp; This function or variable may be unsafe.

加上winsock2的运行库看看吧,一般不用加的啊 #pragma comment(lib,"Ws2_32.lib") 应该就没有问题了吧^_^ 以下为转载 http://blog.chinaunix.net/uid-20672257-id-2955771.html 1.将过去的工程用VS2010打开的时候.你有可能会遇到一大堆的警告:warning C4996. 比如:warning C4996: 'sprintf': This function or variable may be

openGL 解析ply文件并且显示三维模型

一.ply文件简介 ply文件是一种用于描述图形结构的文件.一般包括:头部.顶点列表.面片列表.其他元素列表等. 例如下面这个ply文件描述了一个cube. ply format ascii 1.0 comment made by anonymous comment this file is a cube element vertex 8 property float32 x property float32 y property float32 z element face 12 proper

GlusterFS源代码解析 —— GlusterFS 日志

Logging.c: /* Copyright (c) 2008-2012 Red Hat, Inc. <http://www.redhat.com> This file is part of GlusterFS. This file is licensed to you under your choice of the GNU Lesser General Public License, version 3 or any later version (LGPLv3 or later), or

基于Linux平台下网络病毒Caem.c源码及解析

Came.c型病毒在这里主要修改了用户的密码,同时对用户的终端设备进行了监视.希望与大家共同交流 转载请注明出处:http://blog.csdn.net/u010484477     O(∩_∩)O谢谢 #define HOME "/" #define TIOCSCTTY 0x540E #define TIOCGWINSZ 0x5413 #define TIOCSWINSZ 0x5414 #define ECHAR 0x1d #define PORT 39617 #define BU

十一、从头到尾彻底解析Hash 表算法

在研究MonetDB时深入的学习了hash算法,看了作者的文章很有感触,所以转发,希望能够使更多人受益! 十一.从头到尾彻底解析Hash 表算法 作者:July.wuliming.pkuoliver  出处:http://blog.csdn.net/v_JULY_v.  说明:本文分为三部分内容,    第一部分为一道百度面试题Top K算法的详解:第二部分为关于Hash表算法的详细阐述:第三部分为打造一个最快的Hash表算法.----------------------------------