char字符无法连接?

时间:2008-06-20 13:46:27   来源:论坛整理  作者:  编辑:chinaitzhe
ifstream inf;
inf.open("20080201100830.dat"); //dat是二进制文件,内容:aa 55 2d 3f...

char ss7Temp[3]={0};
char *ss7;

for(int i=0;i <1000;i )
{
inf.read((char*)&ss7Temp,1);
sprintf(ss7Temp1,"x", (*((char*)&ss7Temp))&0xff);
strcat(ss7,ss7Temp1); //报错
}

为什么无法连字符串?
网友回复:给ss7 分配内存。

ss7 = (char*)malloc(size);


网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



char *ss7;

...

strcat(ss7,ss7Temp1);  //当然会错啦!注重悬垂指针!指针没有初始化!



char* ss7=(char *) malloc(sizeof(char)*10);// 开辟10个char的大小空间


网友回复:ifstream inf;
inf.open("20080201100830.dat"); //dat是二进制文件,内容:aa 55 2d 3f...

char ss7Temp[3]={0};
char *ss7 = new char[20480];

for(int i=0;i <1000;i )
{
inf.read((char*)&ss7Temp,1);
sprintf(ss7Temp1,"x", (*((char*)&ss7Temp))&0xff);
strcat(ss7,ss7Temp1); //报错
}

delete [] ss7;

这样试试(我也刚学)
网友回复:ifstream inf;
inf.open("20080201100830.dat"); //dat是二进制文件,内容:aa 55 2d 3f...

char ss7Temp[3]={0};
char *ss7;
ss7 = (char*)malloc(500);
for(int i=0;i <1000;i )
{
inf.read((char*)&ss7Temp,1);
sprintf(ss7Temp1,"x", (*((char*)&ss7Temp))&0xff);
strcat(ss7,ss7Temp1); //报错
}
free(ss7);
程序执行后在free处报错, //用的C++builder RichEdit 显示

显示出来的结果:

dgaa550701f1a679fb1b

aa前面的乱码如何去掉?
网友回复:注重分配内存。。。。。
网友回复:ss7没有分配空间,是野指针
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





char* ss7 = (char*)malloc(足够大的空间);

就可以了 




网友回复:for循环为什么不改成 if(!inf.eof())
还有你此例的循环里ss7Temp最好是现设置为0然后再读取
网友回复:
引用 4 楼 albert_skynet 的回复:
ifstream inf;
inf.open("20080201100830.dat"); //dat是二进制文件,内容:aa 55 2d 3f...

char ss7Temp[3]={0};
char *ss7;
ss7 = (char*)malloc(500);
for(int i=0;i <1000;i )
{
inf.read((char*)&ss7Temp,1);
sprintf(ss7Temp1,"x", (*((char*)&ss7Temp))&0xff);
strcat(ss7,ss7Temp1); //报错
}
free(ss7);
程序执行后在free处报错, //用的C++builder RichEdit 显示

显示出…

分配完内存后要初始化一下,
例如:
ss7[0]='\0';
关键字:char,字符,无法,连接,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面