case 2: //收到大于RTHresshold个字符
k = m_Com.GetInBufferCount(); //接收到的字符数目
if(k > 0)
{
vResponse=m_Com.GetInput(); //read
//对数据进行其他处理
str = (char*)(unsigned char*) vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_strReceive+= (const char *)str;
k = m_Com.GetInBufferCount(); //接收到的字符数目
if(k > 0)
{
vResponse=m_Com.GetInput(); //read
//对数据进行其他处理
str = (char*)(unsigned char*) vResponse.parray->pvData;
}
// 接收到字符,MSComm控件发送事件
i = 0;
str1 = str;
while (i < k)
{
i++;
str1++;
}
*str1 = '\0';
m_strReceive+= (const char *)str;
就是
str1[0]='\0';
字符串是以'\0'结尾的
这里的意思是把字符串赋空
可以改为char* str1 = NULL;
一般原则,指针变量在定义的时候最好初始化!
和*str1 = '\0'以及str1[0]='\0';是不一样的!
前者指针是空值,后者指针确定,指向的内容为零!
————————————————————————————————
这也同样犯了我刚才说的错误
str=……才会可能指向不确定的地址,
*str=……改变的只是指针指向地址的内容,却不会改变指针的地址,也就不能改变一个指针是否野指针的状态
估计是看错题目成str=……了
——————————————————————
今天大家都睡糊涂了???
CSring str = NULL;这句话你自己到VC上面试一下能否编译通过!!
error C2440: 'initializing' : cannot convert from 'const int' to 'class CString'
No constructor could take the source type, or constructor overload resolution was ambiguous
NULL只是零,而""却是一个有固定值的常量指针!
str=""才正确