社区
C语言
帖子详情
复制源字符串到目标字符串!
crossingdragons
2003-09-14 04:22:26
复制源字符串到目标字符串!包括终止null,假设目标字符串有足够的空间!
int StrCpy(char *strDest, char *strSrc)
...全文
778
8
打赏
收藏
复制源字符串到目标字符串!
复制源字符串到目标字符串!包括终止null,假设目标字符串有足够的空间! int StrCpy(char *strDest, char *strSrc)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dddd8888
2003-09-15
打赏
举报
回复
char * strcpy(char * dest,const char *src)
{
ASSERT(dest!=NULL && src!=NULL);
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}
wgzh
2003-09-15
打赏
举报
回复
to TianGuangZao(天光早)
确实如你所说
“while ((*dest++ = *src++) != '\0')”
拷贝是考虑到了 '\0';
但是这种写法比较容易看错,以为没有考虑到'\0'(我初一看就这么认为)。
个人还是喜欢下面这种结构,直观(在不影响性能的情况下这点也很重要)!
while( *strSource != '\0' )
{
*strDestination = *strSource;
strDestination++;
strSource++;
}
*strDestination = '\0';
TianGuangZao
2003-09-14
打赏
举报
回复
to wgzh(火鸟):
完全同意。
不过上面这个例子是用
char *src = "hello world!";
申明的,结尾带了 '\0'.
while ((*dest++ = *src++) != '\0')
拷贝是考虑到了 '\0'
如果是 char src[] = "hello world!" 结尾也带了 '\0'
只有 char src[12] = "hello world!" 就要考虑了。
pzytony
2003-09-14
打赏
举报
回复
可以使用memcpy ,这样拷贝的字节的数量就确定了——
函数名: memcpy
功 能: 从源source中拷贝n个字节到目标destin中
用 法: void *memcpy(void *destin, void *source, unsigned n);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[] = "******************************";
char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709";
char *ptr;
printf("destination before memcpy: %s\n", dest);
ptr = memcpy(dest, src, strlen(src));
if (ptr)
printf("destination after memcpy: %s\n", dest);
else
printf("memcpy failed\n");
return 0;
}
wgzh
2003-09-14
打赏
举报
回复
char *strcpy(char *strDestination,const char *strSource)
{
char *p = strDestination;
assert( strDestination != NULL && strSource != NULL );
while( *strSource != '\0' )
{
*strDestination = *strSource;
strDestination++;
strSource++;
}
*strDestination = '\0';
//这句一定要记得加上,楼上各位都忘了这条语句。不然打印出来的字符串
//可能有些不是想要的东西(因为没有拷贝字符串结束符)。
return p;
}
TianGuangZao
2003-09-14
打赏
举报
回复
to itaolu(老罗):
char *dest;
char *src = "hello world!";
dest = (char *)malloc(strlen(src)+1);
while (*dest++ = *src++) ; // 关键!
free(dest);
代码有点小问题,最后一句 free(dest) 太草率。
#include <stdio.h>
int main()
{
char *dest;
char *src = "hello world!";
dest = (char *)malloc(strlen(src)+1);
if ( dest == NULL )
{
printf ( "No enough menory to allocate!");
exit (1);
}
char *tmp = dest;
while ((*tmp++ = *src++) != '\0')
;
printf ("%s\n", dest);
free(dest);
}
TianGuangZao
2003-09-14
打赏
举报
回复
/**
* strcpy - Copy a %NUL terminated string
* @dest: Where to copy the string to
* @src: Where to copy the string from
*/
char * strcpy(char * dest,const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}
这是 gcc 3.3 中 strcpy 的实现,一般还在头文件中带异常抛出。
个人认为还是尽量用现成的比较好。
strcpy/memcpy 都工作的不错,侧重面稍不同,更喜欢后者。
sprintf 带格式化输出,也是可以,就是速度相对慢点。
sprintf(destination, "%s", source);
或
sprintf(destination, source);
itaolu
2003-09-14
打赏
举报
回复
其实关键部分只要一句就够了:
char *dest;
char *src = "hello world!";
dest = (char *)malloc(strlen(src)+1);
while (*dest++ = *src++) ; // 关键!
free(dest);
C语言
字符串
-
字符串
的
复制
strncpy_s(
目标
字符串
的首地址,缓冲长度,被
复制
的
字符串
的首地址,,
复制
的长度)strcpy_s(
目标
字符串
的首地址,缓冲长度,被
复制
的
字符串
的首地址)strncpy(
目标
字符串
的首地址,被
复制
的
字符串
的首地址,
复制
的长度)strcpy(
目标
字符串
的首地址,被
复制
的
字符串
的首地址)仿真
字符串
复制
函数 strncpy。仿真
字符串
复制
函数 strcpy。,这种
复制
方式更像是覆盖。
C语言实现
字符串
复制
功能
本文介绍了C语言中三种常用的字符数组
复制
函数,分别是strcpy()、strncpy()和memcpy()函数。strncpy()函数与strcpy()函数类似,也是用于
字符串
复制
的函数。与strcpy()函数不同的是,strncpy()函数只
复制
源
字符串
的n个字符。
字符串
复制
是程序中常用的操作之一,本文将介绍如何使用C语言实现
字符串
复制
功能。其中,dest是
目标
字符串
,src是
源
字符串
,n是要
复制
的字符数。其中,dest是
目标
数组,src是
源
数组,n是要
复制
的字节数。C语言实现
字符串
复制
功能。
字符串
的部分
复制
提示 函数 strmncpy 的原型为: void strmncpy(char *s, int m, int n, char *t); 参数 s 指向
源
字符串
,t 指向
字符串
复制
的
目标
单元,函数功能为将 s 指向
字符串
从第 m 个(从000开始编号)字符开始的连续 n个字符
复制
到 t 指向的存储单元; 如果第 m 个字符后面的字符数不足 n 个,则
复制
到 ‘\0’为止; 如果 s 的长度不到m,...
C++实现
字符串
的部分
复制
实现
字符串
的部分
复制
提示 函数 strmncpy 的原型为: void strmncpy(char *s, int m, int n, char *t); 参数 s 指向
源
字符串
,t 指向
字符串
复制
的
目标
单元,函数功能为将 s 指向
字符串
从第 m 个(从0开始编号)字符开始的连续 n 个字符
复制
到 t 指向的存储单元; 如果第 m 个字符后面的字符数不足 n 个,则
复制
到 ‘\0’为止; 如果 s 的长度不到 m,则
复制
空串。 例如: char *s = "abcdefghijklmn"; cha
将
字符串
的一部分拷贝到另一个
字符串
主要3中实现方式:strncpy()、string类、memcpy() 通过string实现更方便。 1、strcpy() 无法实现将
字符串
的一部分拷贝给另一个
字符串
。 2、strncpy() 利用标准库函数strncpy(),可以将一
字符串
的一部分拷贝到另一个
字符串
中。strncpy()函数有3个参数:第一个参数是目录
字符串
;第二个参 数是
源
字符串
;第三个参数是一
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章