我的代码如下:
char * test(CString s)
{
int i=s.Find("5",1);
char a[255];
s=s.Mid(i+1);
sprintf(a,"%s",s);
return(a);
}
main()
{
char *s=test("ABC5DEF");
}
返回值是“DEF",可这和直接给char *s="DEF"并相等,为什么?如何才能让它们相等?

解决方案 »

  1.   

    To: guoxiny(狼) 返回值是“DEF",可这和直接赋值给char *s="DEF"并不相等,为什么?如何才能让它们相等?
      

  2.   

    CString str(_T("l love you"));
    char ch[100];
    int len=str.GetLegth();
    for(int i=0;i<len,i++)
    {
       ch[i]=str.GetAt(i);
    }
    ch[len]='\0';
      

  3.   

    CString str(_T("l love you"));
    char ch[100];
    strcpy(ch,str.GetBuffer(str.GetLength()))
      

  4.   

    你不会时这样比较的吧
    char* s1 = "DEF";
    char* s2 = "DEF";
    if (s1 == s2)
    {
    }
    这样肯定不等的,你要比较只能这样比较
    if (strcmp(s1, s2) == 0)
    {
    }
      

  5.   

    To Earthdog(Earthdog) ,就是你说的那样比较的,各位大侠试试看吧
    if (strcmp(s1, s2) == 0)
    {
    }
      

  6.   

    指针的==比较只是判断两个指针是否指向同一地址。要想判断字符串是否相同,只能用strcmp(),当然如果是CString对象,就可以用==了,因为CString类已经重载了它。