c和c++语言中,在大多数的操作系统中也一样,字符串中的字符是有特定含义的,如0表示字符串终结。如果确实含有字符0000(出现在串的中间)你这个串应该看作字节数组。
比如在文件中,应用二进制的方式打开,不能使用iostream中的<<,>>运算符,直接用read,write。
在内存中必须有其他的渠道可以得到数组的大小。

解决方案 »

  1.   

    你的字符串中的ASCII码字符0000是如何加入的,是否可以考虑memcpy函数
      

  2.   

    最简单的程序,假设字符串为 pchar,长度为n
    char *p;
    p=pchar;
    for (int i=0;i<n,p!=pchar;i++){
         if (*p==0&&(*(p+1)==0)&&(*(p+2)==0)&&(*(p+3)==0))
              break;
         p++;
    }
    p的位置和i的位置均能确定0000。
        
      

  3.   

    可以将该字符串看作一个数组或一个内存区。用
    for(int i=0;i<len;i++) sprintf(buff,"%u",buf[i]);  //len为数组长度,buf为含0的字符串,假设要将buf中的各个字符的十六制值放到buff中
    或用memcpy也可以读这个字符串
      

  4.   

    char x[4];
    x[0]='1';
    x[1]=0;
    x[2]='2';
    x[3]=0;
    for(int i=0;i<4;i++)printf("%d ",x[i]);
      

  5.   

    很奇怪,既然是字符串,怎么会在中间包含ASCII的0000呢,有一个0,你的字符串就结束了...
    我倒愿闻其详!
      

  6.   

    那应该jiao字符数组,不是字符串。是吧!
    我Faint