帮我看这个c++程序报错在哪里

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:47:45
#include <string>

void BytesToHexString(const unsigned char *data, unsigned int length, string& str )
{
char tmpBuffer[10240] = {0} ;

if( data!=NULL && length>0 )
{
for( int i=0;i<length; i++ )
{
char tmp[8] = {0} ;

sprintf( tmp, "%02X ", data[i]) ;

strcat( tmpBuffer, (const char*)tmp ) ;

}
}

str = tmpBuffer ;
}

void main()
{
char[20] b = "VTSCMS009_01";
char* testData = b;
string str;
BytesToHexString(testData, (int)12, str);

}
刚学c++,就在看源代码了,所以不明白,编译时出错,也看不懂错在哪里

这么改:
#include <string>
#include<iostream> //加上这个头文件,string数据类型的声明需要这个头文件
using namespace std;//加上这一句

void BytesToHexString(const unsigned char *data, unsigned int length, string& str )
{
char tmpBuffer[10240] = {0} ;

if( data!=NULL && length>0 )
{
for( int i=0;i<length; i++ )
{
char tmp[8] = {0} ;

sprintf( tmp, "%02X ", data[i]) ;

strcat( tmpBuffer, (const char*)tmp ) ;

}
}

str = tmpBuffer ;
}

void main()
{
char b[20] = "VTSCMS009_01"; //这里应该是char b[20],不是char[20] b
char* testData = b;
string str;
BytesToHexString((unsigned char *)testData, (int)12, str);//这里需要将testData强制类型转化为unsigned char *,保持和BytesToHexString()参数类型的一致

}

把编译错误贴出来
不过至少你的str = tmpBuffer有问题,因为tmpBuffer是局部变量在函数