• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
f2081 2014年01月02日
long类型如何转变为char类型?为什么数组带不出来结果呢?
int	*sql_int_field_len_bit=new	int[fields_bind_count*sizeof(int)];
char *sql_char_field_len_bit=new char[fields_bind_count*sizeof(int)];
//----------存放每个字段长度的数组
//int sql_int_field_len[fields_bind_count];//={0};
//char sql_char_field_len[fields_bind_count];//={0};
int *sql_int_field_len=new int[fields_bind_count*sizeof(int)];
char *sql_char_field_len=new char[fields_bind_count*sizeof(int)];
char *s=new char[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的字符串,怎么做呢?
谢谢
...全文
116 点赞 收藏 7
写回复
7 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C++ Builder
创建于2007-08-02

2548

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告