社区
C语言
帖子详情
C语言中从指定位置开始拷贝指定长度的字符串?
xiaoyao6650
2008-10-24 02:32:53
我是C语言新手。
请问C语言中怎样实现从指定位置开始拷贝指定长度的字符串?
只能用循环一个一个赋值吗?
有没有相应的函数可供使用呢?
...全文
5326
22
打赏
收藏
C语言中从指定位置开始拷贝指定长度的字符串?
我是C语言新手。 请问C语言中怎样实现从指定位置开始拷贝指定长度的字符串? 只能用循环一个一个赋值吗? 有没有相应的函数可供使用呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoyao6650
2008-10-24
打赏
举报
回复
[Quote=引用 19 楼 Arthur_ 的回复:]
a[9]=char(255); 等价于 a[9]=(char)255
[/Quote]
将这个写入有什么用吗?
anybbs
2008-10-24
打赏
举报
回复
[Quote=引用 20 楼 anybbs 的回复:]
引用 9 楼 xiaoyao6650 的回复:
怎么不可以呢?
我定义了两个数组
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
//或者 memcpy(b,a+1,2);
puts(b);
显示的结果都是:
bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg
这是为什么啊
是我的指针用的不对吗?
strncpy会自动在目的串最后加一个结束符
而memcpy则不会加
================
[/Quote]
哦,sorry, strncpy当copy的字符少于源字符串时是不会自动加结束符的
anybbs
2008-10-24
打赏
举报
回复
[Quote=引用 9 楼 xiaoyao6650 的回复:]
怎么不可以呢?
我定义了两个数组
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
//或者 memcpy(b,a+1,2);
puts(b);
显示的结果都是:
bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg
这是为什么啊
是我的指针用的不对吗?
[/Quote]
strncpy会自动在目的串最后加一个结束符
而memcpy则不会加
================
Arthur_
2008-10-24
打赏
举报
回复
a[9]=char(255); 等价于 a[9]=(char)255
xiaoyao6650
2008-10-24
打赏
举报
回复
[Quote=引用 15 楼 Arthur_ 的回复:]
a[10]=char(255); //传统的想法是:难道没有越界吗?
[/Quote]
是我写错了,应该死是a[9]=char(255);
cyj626
2008-10-24
打赏
举报
回复
[Quote=引用 12 楼 dic_walter 的回复:]
引用 9 楼 xiaoyao6650 的回复:
怎么不可以呢?
我定义了两个数组
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
//或者 memcpy(b,a+1,2);
puts(b);
显示的结果都是:
bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg
这是为什么啊
是我的指针用的不对吗?
char b[10] = {0};
强烈建议初始化!!!!!
[/Quote]
up
lbh2001
2008-10-24
打赏
举报
回复
[Quote=引用 13 楼 xiaoyao6650 的回复:]
还有一个问题
就是
char a[10]="abcdefgbcj";
a[10]=char(255);
这句话是什么意思啊?
[/Quote]
将数组结束处改写为-1
但最好不要这样用
此时为越界使用,会产生破坏
Arthur_
2008-10-24
打赏
举报
回复
a[10]=char(255); //传统的想法是:难道没有越界吗?
shiyi820509
2008-10-24
打赏
举报
回复
最大只能用到a[9]啊 用a[10]就数组越界了
xiaoyao6650
2008-10-24
打赏
举报
回复
还有一个问题
就是
char a[10]="abcdefgbcj";
a[10]=char(255);
这句话是什么意思啊?
dic_walter
2008-10-24
打赏
举报
回复
[Quote=引用 9 楼 xiaoyao6650 的回复:]
怎么不可以呢?
我定义了两个数组
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
//或者 memcpy(b,a+1,2);
puts(b);
显示的结果都是:
bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg
这是为什么啊
是我的指针用的不对吗?
[/Quote]
char b[10] = {0};
强烈建议初始化!!!!!
xiaoyao6650
2008-10-24
打赏
举报
回复
[Quote=引用 10 楼 Arthur_ 的回复:]
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
加一个b[2] = '\0';
[/Quote]
谢谢了
可以了
原来是没有结束符号
Arthur_
2008-10-24
打赏
举报
回复
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
加一个b[2] = '\0';
xiaoyao6650
2008-10-24
打赏
举报
回复
怎么不可以呢?
我定义了两个数组
char a[]="abcdefg";
char b[10];
strncpy(b, a+1, 2);
//或者 memcpy(b,a+1,2);
puts(b);
显示的结果都是:
bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg
这是为什么啊
是我的指针用的不对吗?
Arthur_
2008-10-24
打赏
举报
回复
strstr 或者 strchr找到位置
根据返回的指针作为起始点
memcpy(youbuffer, start, len);
anybbs
2008-10-24
打赏
举报
回复
strncpy(dest, src+POS, len)
dest: 目的
src : 源
POS : 指定位置
len : 长度
jakky520
2008-10-24
打赏
举报
回复
int strncpy(char *s1,char *s2,int n);
xhs_lh04
2008-10-24
打赏
举报
回复
memcpy(desc,src+offset, len);
xhs_lh04
2008-10-24
打赏
举报
回复
strncpy(desc, src+offset, len);
lbh2001
2008-10-24
打赏
举报
回复
memcpy(des, source, sizof(source));
加载更多回复(2)
《
C语言
基础》 之 第9章
字符串
课程内容:字符数组1、
字符串
越位的问题、指针变量的空间大小、
字符串
常量、
字符串
传参、printf格式化输出
字符串
、
字符串
的非格式化输出函数、
字符串
输入函数、strlen函数、strcpy函数和strncpy函数、strcmp函数和strncmp函数、strcat函数和strncat函数。
c语言
copy
指定
长度
的
字符串
,
C语言
实现
字符串
拷贝
拷贝
指定
长度
字符串
字符串
连接...
void mystrcpy(char *target, char *source){while((*target = *source) != '\0'){source++;target++;}}void mynstrcpy(char *target, char *source, int n){int i = 0;while((i < n) && (*target = *sou...
C语言
中
字符串
相关的
拷贝
函数
C语言
下
字符串
拷贝
函数汇总对比 1.1、strcpy 函数原型char *strcpy(char *dest, const char *src) 需要注意的是如果目标数组 dest 不够大,而源
字符串
的
长度
又太长,可能会造成缓冲溢出的情况,所以在实际使用一定要注意dest的空间一定要大于strlen(src)+1,最后有一个结束符‘\0’ 1.2、strncpy 函数原型char *strncpy(char *dest, const char *src, size_t n) 把 src所指向的
字符串
c语言
:
拷贝
字符串
一、strcpy():容易溢出 头文件:#include <string.h> strcpy() 函数用来复制
字符串
; 其原型为:char *strcpy(char *dest, const char *src); strcpy()是依据 \0 作为结束判断的; 通常,我们的 from 都来源于用户的输入,很可能是非常大的一个
字符串
,因此 strcpy 不够安全; (1)【参数】dest 为目标
字符串
指针,src 为源
字符串
指针; (2)注意:src 和 dest 所指的内存区域不能重叠,且d
C语言
字符串
拷贝
详解
这篇博客详细介绍了在
C语言
中
实现
字符串
拷贝
和
字符串
拷贝
n个字符的方法,包括了使用strcpy、strcpy_s、strncpy和strncpy_s函数的示例代码,并解释了它们的区别和注意事项。需要注意的是,strncpy_s函数是C11标准引入的安全版本函数,在复制
字符串
时要求
指定
目标
字符串
的
长度
上限,并且自动在目标
字符串
的末尾添加空字符’ \0’。需要注意的是,strcpy_s函数是C11标准引入的安全版本函数,在复制
字符串
时要求
指定
目标
字符串
的
长度
上限,以防止越界操作。
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章