定义char* x;
      x="12345678";
     int k=sizeof(x);
得到k=4;  如何得到x的确切长度8?

解决方案 »

  1.   

    定义的不对,
    char *x;
    char a[] ="12345678";
    x=a;
    int k=sizeof(x);
    这样就会得到8了,
    错误因为你的x没有分配存贮空间
      

  2.   

    char* x;
    x="12345678";
    CString str;
    str.Format("%s", x);
    int k=str.GetLength();
      

  3.   

    char* x = "12345678";
    CString str;
    strcpy(str, x);
    int k=str.GetLength();
      

  4.   

    char x[] = "12345678" ;
      

  5.   

    我的程序只能仅使用char* 也就是不能通过char[]过渡传值char* x=某个外部数值;(不确定长度)如何得到‘某个外部数值’的长度? 
      

  6.   

    指针类型长度为4sizeof(char *)=sizeof(CString)=4如果想得到8,可: const char *a="12345678";

    CString tmp("");
    tmp=a;
    int i=tmp.GetLength(); TRACE("%d",i);
      

  7.   

    char * pchar;
    pchar="012345607";
    for(int ilen=0;pchar[ilen]!=0;ilen++);
    printf("%d \n",ilen);
      

  8.   

    要想得到一个外部char*的长度是很困难的,方法就是使用strlen(char*),但这种方法只能得到以'\0'结束的字符串的长度,而不能得到你实际分配给这个char*的内存的长度,并且,如果char*中存放的是自定义数据(也就是0可能是合法数据)的时候,这个方法就不能用了。建议增加一个参数来表示你传递的char*的可用内存长度。
      

  9.   

    定义char* x;
          x="12345678";
         int k=sizeof(x);
    得到k=4;  如何得到x的确切长度8?实际上x = "12345678"是将字符串常量的地址赋给了x, 所以你应该这样定义x:
    const char *x = "12345678";
    另外:sizeof是获得char类型的长度,而不是字串的长度,应该如下:
    int k= strlen(buf);