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;

解决方案 »

  1.   

    *str1 = '\0'
    就是
    str1[0]='\0';
    字符串是以'\0'结尾的
    这里的意思是把字符串赋空
      

  2.   

    同意楼上
    可以改为char* str1 = NULL;
      

  3.   

    如果不加他,str这个指针就会指向不确定的地址,就会产生野指针!
    一般原则,指针变量在定义的时候最好初始化!
      

  4.   

    char* str1 = NULL;
    和*str1 = '\0'以及str1[0]='\0';是不一样的!
    前者指针是空值,后者指针确定,指向的内容为零!
      

  5.   

    如果不加他,str这个指针就会指向不确定的地址,就会产生野指针!
    ————————————————————————————————
    这也同样犯了我刚才说的错误
    str=……才会可能指向不确定的地址,
    *str=……改变的只是指针指向地址的内容,却不会改变指针的地址,也就不能改变一个指针是否野指针的状态
    估计是看错题目成str=……了
      

  6.   

    就是和 CSring str = NULL; 一样啦.
      

  7.   

    就是和 CSring str = NULL; 一样啦.
    ——————————————————————
    今天大家都睡糊涂了???
    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=""才正确