| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1674 人关注过本帖
标题:求助:字符串赋值出错
取消只看楼主 加入收藏
Scofield
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2006-5-30
收藏
 问题点数:0 回复次数:5 
求助:字符串赋值出错

主要过程如下:
...
CString str1="5.2";

memcpy( &info.data, str1, strlen(str1)); //data为BYTE类型,在类info中定义时为BYTE data[8];

for( int i = strlen(str1); i<8; i++)
{
info.data[i] = '0'; //余下部分补0
}

CString s=info.data; //得到s="5.200000烫?.2" ,不知道为什么不是"5.200000"?而且奇怪的是后面多余的部分 "?.2与" str1 值有关,比如若

//str1="54.7",则s="54.70000烫?4.7",希望得到高手解惑,谢谢!

搜索更多相关主题的帖子: 赋值 字符 data info 
2006-07-20 11:29
Scofield
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2006-5-30
收藏
得分:0 

对,是类的对象:
...
char FileData[8] = "";
while(InFile >> FileData) //FileData直接从文件中获取字符
{
m_SendData=FileData; //m_SendData为CString型

for(int i=strlen(m_SendData);i<7;i++)
{
info.Data[i]='0';
}
info.Data[7]='\0';
........
str="数据:"; //CString str,tmpstr;
for(int j=0;j<7;j++)
{
tmpstr=info.Data[j];
str+=tmpstr;
}
box->InsertString(box->GetCount(),str);

//不知道为什么输出的数据后面总是带有乱码字符,比如FileData="5.2"时,结果显示的却是"5.2 **"(*代表乱码).谢谢了!


2006-07-21 19:21
Scofield
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2006-5-30
收藏
得分:0 
//Data为BYTE类型,在类info中定义时
为BYTE data[8];

2006-07-21 19:25
Scofield
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2006-5-30
收藏
得分:0 

谢谢,不过Data定义为BYTE类型是在dll中被定义的,我只是调用,dll里面的东西自己不好修改吧?
...
char FileData[8] = "";
while(InFile >> FileData) //FileData直接从文件中获取字符
{
m_SendData=FileData; //m_SendData为CString型

for(int i=strlen(m_SendData);i<7;i++)
{
info.Data[i]='0';
}
info.Data[7]='\0'; //////(*)
........
str="数据:"; //CString str,tmpstr;
for(int j=0;j<7;j++)
{
tmpstr=info.Data[j];
str+=tmpstr;
}
box->InsertString(box->GetCount(),str);//////(**)

另外我在(*)和(**)两处加了断点发现,info.Data在(*)处正常,即为“5.20000”,而到了(**)处却为“5.2×××5.2”,其中只有前三位正常:info.Data【0】=‘5’,info.Data【1】=‘.’,info.Data【2】=‘2’,其余字节均为'?',不知道错在什么地方了呢?
注:(*)和(**)之间的省略号处没有对该数据进行操作


2006-07-22 09:09
Scofield
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2006-5-30
收藏
得分:0 
嗯,6楼的兄弟说的对,刚开始确实忘了,不过后来加了后(*)处的info.Data显示的结果就正常了,不过到了(**)处却发现数据末尾又出现乱码了


2006-07-22 09:13
Scofield
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2006-5-30
收藏
得分:0 

嗯,是这样的:

char FileData[8] = "";

while(InFile >> FileData) ////////////////FileData直接从文件中获取字符
{
m_SendData=FileData;
VCI_CAN_OBJ info;
memcpy(&info.Data,m_SendData,strlen(m_SendData));

for(int i=strlen(m_SendData);i<8;i++)
{
info.Data[i]='\0';
} ///(*)
if(VCI_Transmit(m_devtype,m_devind,m_cannum0,&info,1)==1)
{ //VCI_Transmit(设备类型号,设备索引号,第0路CAN发送,要发送的数据帧的首指针,发送数据的长度)

ShowInfo("通道0发送成功",0);

}
if(VCI_Receive(m_devtype,m_devind,m_cannum1,&info,1)==1) //第1路CAN接收
{
CNewDlg *dlg=this;
CListBox *box=(CListBox *)dlg->GetDlgItem(IDC_LIST_INFO);
CString str,tmpstr;

str="数据:";
tmpstr=info.Data;
str+=tmpstr;

box->InsertString(box->GetCount(),str);
box->SetCurSel(box->GetCount()-1); //(**)

ShowInfo("通道1接收成功",0);
}
else
{
ShowInfo("发送失败",2);
}
}

不知道原因在哪里呢?

[此贴子已经被作者于2006-7-22 11:16:39编辑过]


2006-07-22 11:12
快速回复:求助:字符串赋值出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029695 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved