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 展开
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 展开
3个回答
展开全部
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 个字节被拷贝,后续的空间不会被拷贝
如果不注意到这一点,程序可能出现意想不到的错误。
也就是
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 个字节被拷贝,后续的空间不会被拷贝
如果不注意到这一点,程序可能出现意想不到的错误。
展开全部
连接字符串函数!strcat(str1,str2).
包含在
#include<string.h>
将数字转换为字符串函数
包含在
#include<string.h>
将数字转换为字符串函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先确认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中数值对应的字符串。
现在只需要将 DBfr[i] 中的数值内容转换为相应的字符即可。
由数值转换为字符:
DBfr[i]+'0'
构造一个存放字符串的存储空间,
char str[100];
for(i=0;i<Len;i++)
{
str[i] = DBfr[i]+'0';
}
str[i]='\0';
则str中的内容就是DBfr中数值对应的字符串。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询