社区
C语言
帖子详情
一个关于memcpy的问题
xliu2019
2003-03-29 03:42:51
有一段程序
#include<stdio.h>
#include<string.h>
char a[20]="sdfsdf";
void main()
{
char *p;char *str;
p=strchr(a,'f');
memcpy(str,a,p-a);
printf("%s",str);
}
运行结果为“sd\x2”,怎么会这样?
...全文
22
6
打赏
收藏
一个关于memcpy的问题
有一段程序 #include #include char a[20]="sdfsdf"; void main() { char *p;char *str; p=strchr(a,'f'); memcpy(str,a,p-a); printf("%s",str); } 运行结果为“sd\x2”,怎么会这样?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blue_fairy
2003-03-29
打赏
举报
回复
对不起,我拷贝你的代码,多拷贝了一行。
blue_fairy
2003-03-29
打赏
举报
回复
我想这对于你来说是个很好的教材,在这里你的 指针变量 str 没有被初始化,它所指向的内存地址是不确定的,这是一种野指针。对他的操作很危险,所以最好改成如下形式:
#include<stdio.h>
#include<string.h>
char a[20]="sdfsdf";
void main()
{
char *p;
char str[20];
memset(str, 0, sizeof(str));
p=strchr(a,'f');
memcpy(str,a,p-a);
printf("%s",str);
}
运行结果为“sd\x2”,怎么会这样?
bauhaus
2003-03-29
打赏
举报
回复
记得分配内存,这个是指针使用经常遇到的问题,分配内存的时候注意检查内存有效性。另外你可以使用栈空间
Lastdrop
2003-03-29
打赏
举报
回复
你这样很危险的,没有为str分配空间,就memcpy,会内存溢出的。
doer_ljy
2003-03-29
打赏
举报
回复
改成:
#include<stdio.h>
#include "alloc.h"
#include<string.h>
char a[20]="sdfsdf";
void main()
{
char *p;char *str;
str = (char *)malloc(10*sizeof(char)); /*分配内存*/
p = (char *)malloc(10*sizeof(char));
p=strchr(a,'f');
memcpy(str,a,p-a);
printf("%s",str);
}
kicool
2003-03-29
打赏
举报
回复
str没有初始化阿!
java
memcpy
_关于
memcpy
的实现
今天去面试,面试官出了
一个
关于
memcpy
的函数原型的实现的
问题
,本来这个
问题
是很简单的,但是不知道当时怎么脑子一抽竟然写错了,真是”累觉不爱”了.感觉这份工作算是泡汤了,算了事情发生了,错过了也就错过了.既然这样...
关于
memcpy
和strcpy
二者都是复制函数但是有所区分 1.二者需要的形参数目不同 ...
memcpy
则是根据其第3个参数决定复制的长度。 4.一般字符串用strcpy而其他内容复制用
memcpy
写法大概这样:
memcpy
(b, a, sizeof(a))..
关于
memcpy
在循环里只写入一部分数据的
问题
在写小功能的时候,使用
memcpy
API的时候,出现了在循环中,只...第
一个
参数是 需要传的是
一个
指针。没错呀。这让我一筹莫展。 往往 啥都没
问题
的 时候 错误可能就出现在 最简单的地方。直到我想到了要写入的文件 没错
C语言中关于
memcpy
函数
关于
memcpy
函数 **
memcpy
指的是C和C++使用的内存拷贝函数,函数原型为void *
memcpy
(void destin, void source, unsigned n);函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source...
最近碰到的
一个
关于
memcpy
的奇葩
问题
最近写代码,碰到
一个
奇葩
问题
,
memcpy
函数用起来,编译居然提示我stackoverflow,WTF! UINT8 numBuffers = 0; UINT16 cpLength = 0; // TPM2B_DIGEST *bufferList; if(length%(MAX_DIGEST_BUFFER) != 0) ...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章