字符串拷贝函数
strcpy
的原型:
char *strcpy(char *strDest,const char *strSrc);
strcpy
函数将
strSrc
拷贝至输出参数
strDest
中,同时函数的返回值又是
strDest
。这样做并非多此一举,可以获得如下灵活性:
char str[20];
int length = strlen( strcpy(str, “Hello World”) );
作用:为了生成链式表达式。
在面试中常会遇到写 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的原型:char *strcpy(char *strDest,const char *strSrc);strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性: char str[20]; int length = strlen( strcpy(str, “Hell
strcpy
原型声明:extern char *
strcpy
(char* dest, const char *src);头文件:#include 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
函数
实现: 代码如下:/********************** * C语言标准库
函数
strcpy
的一种典型的工业级的最简实现 *
返回值
:目标串的地址。 * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定
返回值
,通
在
面试
中常会遇到写
strcpy
,以及相关的问题,比如说
返回值
的
作用
等。
//z 2012-07-06 10:23:32 AM IS2120@CSDN.T1445120086
以下为
微软
clib中的
strcpy
的写法。
*char *
strcpy
(
dst
, src) - copy one
string
over another
*Purpose:
例如字符串拷贝
函数
strcpy
的原型:
char *
strcpy
(char *strDest,const char *strSrc);
strcpy
函数
将strSrc 拷贝至输出参数strDest 中,同时
函数
的
返回值
又是strDest。
这样做并非多此一举,可以获得如下灵活性:
char str[20
函数
的参数分别是目的(destination)字符串的地址,以及被拷贝(source)的字符串的地址。
此外,由于我们只是把一个字符串复制到另一个地址空间,所以源头字符串不会被修改,所以我们用const修饰,比较安全。
strcpy
函数
的
返回值
是目的地字符串首元素的地址,返回类型是char*。
strcpy
是将源头字符串包括’\0’复制到另一个地址空间,这样才能确保目的地字符串有字符串结束的标志’\0’,避免出现字符串无‘0’的情况而引起bug。
strcpy
是C++语言的一个标准
函数
,
strcpy
把含有'\0'结束符的字符串复制到另一个地址空间,
返回值
的类型为char*。
下面给出网上
strcpy
的得分版本:
void
strcpy
( char *strDest, char *strSrc )
while...
如果strDest的长度小于strSrc,会删除strDest,然后new一块与strSrc相同大小的内存。
由于我知道试题是出自林锐的《高质量C++编程指南》,所以回来后我查看了相关的资料,结果大失所望,以下是引自原文:
【建议6-2-1】有时候
函数
原本不需要
返回值
,但为了增加灵活性如支持链式表达,
可以附加
返回值
。
c语言
strcpy
()用法
strcpy
,即
string
copy(字符串复制)的缩写。
strcpy
是一种C语言的标准库
函数
,
strcpy
把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间,
返回值
的类型为char*。
定义一个字符串char a[20],和一个字符串c[]=“i am a teacher!”;
把c复制到a中就可以这样用:
strcpy
(a,c)...
assets目录下不会生成R文件索引,在res目录下会生成R文件索引。
1.assets:不会在R.java文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中,
2.res:会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打...
这样做的目的是方便程序中语句内联,比如strlen(
strcpy
(s,t))。
为了实现链式操作,将目的地址返回
int lengh=strlen(
strcpy
(s,t))。
Strcpy
函数
可以作为另外一个
函数
的实参。
char *
strcpy
( char *strDest, const char *strSrc )
assert( (strDest != NULL) &&
keil(MDK)中出现error: #513: a value of type "int" cannot be assigned to an entity of type "char *",即函数返
56686