首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

long类型怎么转变为char类型?为什么数组带不出来结果呢

2014-01-21 
long类型如何转变为char类型?为什么数组带不出来结果呢?int*sql_int_field_len_bitnewint[fields_bind_co

long类型如何转变为char类型?为什么数组带不出来结果呢?

int*sql_int_field_len_bit=newint[fields_bind_count*sizeof(int)];
char*sql_char_field_len_bit=newchar[fields_bind_count*sizeof(int)];
//----------存放每个字段长度的数组
//intsql_int_field_len[fields_bind_count];//={0};
//charsql_char_field_len[fields_bind_count];//={0};
int*sql_int_field_len=newint[fields_bind_count*sizeof(int)];
char*sql_char_field_len=newchar[fields_bind_count*sizeof(int)];
char*s=newchar[10];
for(i=0;i<fields_bind_count;i++)
{
//---生成记录行字符串的总长度
all_sql_len=all_sql_len+(*sql_long_field_len[i]);
/---保存单个记录的长度
sql_int_field_len[i]=*sql_long_field_len[i];
//strncpy(sql_char_field_len+i,(const char *)sql_long_field_len[i],sizeof(long));
itoa(sql_int_field_len[i],&sql_char_field_len[i],10);
//ltoa(*sql_long_field_len[i],s,10);
//itoa((int)&sql_long_field_len[i],s,10);
//strncpy(&sql_char_field_len[i],s,strlen(s));//指针给数组赋值不能用"="符号,只能使用strncpy的方式
//strncpy(&sql_char_field_len[i],(const char*)sql_long_field_len[i],2);
if(i==12)
{
//MessageBox(NULL,&sql_char_field_len[12],NULL,MB_OK);
}
//---保存单个记录长度的位数(bit)
sql_int_field_len_bit[i]=strlen(s);
itoa(sql_int_field_len_bit[i],s,10);
strncpy(&sql_char_field_len_bit[i],s,strlen(s));//指针给数组赋值不能用"="符号,只能使用strncpy的方式
//错的sql_char_field_len_bit[i]=*s;
//---生成最终的记录行的字符串总长度
all_sql_len=all_sql_len+sql_char_field_len_bit[i]+1;//1就是用来记录位数(bit)占用的长度
}
MessageBox(NULL,&sql_char_field_len[2],NULL,MB_OK);//s


1、问题是这样的。不论是静态数组sql_char_field_len等还是动态的申请数组。从while循环出来以后,的messagebox的值都是一个随机数,不是想要的值。为什么?数组成员的内存被覆盖了吗?
2、上面的功能,其实就是将long类型转换为char类型,组成char的字符串,怎么做呢?
谢谢
[解决办法]
1、
sql_char_field_len 是一个char*
&sql_char_field_len[2] 是第3个字符的位置,并非第3个整数所对应的字符串开始位置。
2、
你的程序不容易看懂,思路有些乱,命名也不算好。这时候,整理一下原始数据与目标数据,中间过程先不用管,把原始数据与目标数据整理出来后,往往程序就很容易写了。

热点排行