C语言编程

请问:有这么一个函数voidmemcopy(INT8U*DBfr,INT8U*SBfr,INT8ULen){INT8Ui;for(i=0;i<Len;i++){DBfr[... 请问:有这么一个函数
void memcopy(INT8U *DBfr,INT8U *SBfr,INT8U Len)
{
INT8U i;
for(i=0;i<Len;i++)
{
DBfr[i] = SBfr[i];
}
}
把读出来的数据是以一个字节的形式放到DBfr[i],而我又想把DBfr[0] DBfr[1] DBfr[2] DBfr[3] 串起来 ,用什么函数把它们串起来给一个定义的字符串?
放的内容是16进制数 如0x10
展开
 我来答
sinba6530d
2010-08-08 · TA获得超过449个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:222万
展开全部
INT8U 不是c++的基本数据类型,应当是 unsigned char 类型另定义的一个名称

也就是
unsigned char * DBfr
unsigned char * SBfr
DBfr 本身就可以是一个字串,只不过memcopy 工作过程是报存储区一个字节一个字节的copy,这种工作方式不但可以拷贝字符串也可以拷贝任何连续的区域
如果你 SBfr 本身是一字符串数据,那么 DBfr 也是字符串,不需要做任何变换
如果源是某数据类型,目标也是相同的

如:
#include <cstring>
#include <iostream>

typedef unsigned char INT8U;

using namespace std;

void memcopy(INT8U *DBfr,INT8U *SBfr,INT8U Len)
{
INT8U i;
for(i=0;i<Len;i++)
{
DBfr[i] = SBfr[i];
}
}

int main()
{
char ScBufer[80]="this is string.";
char DcBufer[80];
memcopy ((INT8U *) DcBufer,(INT8U *) ScBufer,80);
cout<<"source string="<<ScBufer<<endl;
cout<<"destination string="<<DcBufer<<endl;

double SdBufer[20];
double DdBufer[20];
for(int i=1;i<=20;i++){
SdBufer[i]=1.0/((double) i);
}
memcopy((INT8U * )DdBufer,(INT8U *) SdBufer,sizeof(SdBufer));
for(int i=1;i<=20;i++){
cout.width(15);
cout<<DdBufer[i]<<((i%5 == 0)?"\n":"\t");
}
cout<<endl;
}

在memcopy函数中 i 声明成 INT8U 限制了了该函数最大的工作区为
256 字节,超过该长度的空间则不能工作
比如有工作区长度 为 300字节 则前 44 个字节被拷贝,后续的空间不会被拷贝
如果不注意到这一点,程序可能出现意想不到的错误。
King_Mirage
2010-08-08 · 超过10用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:28.6万
展开全部
连接字符串函数!strcat(str1,str2).
包含在
#include<string.h>
将数字转换为字符串函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ytu_math
2010-08-07 · TA获得超过1558个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:805万
展开全部
首先确认DBfr[0],DBfr[1],DBfr[2],DBfr[3],... 放的内容是什么,你要怎么把他们显示出来。

现在只需要将 DBfr[i] 中的数值内容转换为相应的字符即可。

由数值转换为字符:
DBfr[i]+'0'

构造一个存放字符串的存储空间,

char str[100];

for(i=0;i<Len;i++)
{
str[i] = DBfr[i]+'0';
}

str[i]='\0';

则str中的内容就是DBfr中数值对应的字符串。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式