char szNameString={"aa ss dd ff"};
char *szName[3]={0};
我要把第一行里面的字符串拷贝到第二行的数组里面,最后结果是
szName[0]={"aa"};
szName[1]={"ss"};
szName[2]={"dd"};
szName[3]={"ff"};
就是忽略其中的空格,把其他的字符串放到另外一个数组里面,怎么办?

解决方案 »

  1.   

    1
    char szNameString={"aa ss dd ff"};//这个我看不懂,第一次看到这种写法2 自己写个算法步骤:
      遍历szNmaeString 把空格去掉,去掉的同时记录空格位置,放在数组中
      然后读szNmaeString中的字符(现在没有空格了),读取字符,和数组的位置比较就行了
        
      

  2.   

    还有怎么能这样表示呢??
    szName[0]={"aa"};               --》szName[0]="aa";
    szName[1]={"ss"};
    szName[2]={"dd"};
    szName[3]={"ff"};
      

  3.   

    这是很基本的操作,也许这样就可以吧:(没有测试,也许会有错)
    char *szNameString="aa ss dd ff";
    char *szName;int len=strlen(szNameString);
    szName=(char*)calloc( len, sizeof(char));
    char m_c=0x00;
    int start=0;
    int index=0;for (int i=0;i<len;i++)
    {
       m_c=*(szNameString+i);
       if (m_c==0x20)
       {      
          strncpy(szName+index,szNameString+start,i-start);
          index++;
          start=i+1;
       }  
    }
      

  4.   

    用我最爱用的strtok
    #include <stdio.h>
    #include <string.h>
    void main()
    {
    char szNameString[]={"aa ss dd ff"};
    char *szName[4]={0};
    char *token;
    int i;
    i=0;
    // 以下,szName只是指向原szNameString,没有拷贝
    //如果用拷贝,只要先申请内存,然后用strcpy
      token = strtok( szNameString, " " );
       while( token != NULL )
       {
          szName[i++]=token ;
          token = strtok( NULL, " ");
       }
     //输出  
     for(i=0;i<4;i++)
       printf("szName[%d]=%s\n" ,i ,szName[i]);
    }
      

  5.   

    楼上高人啊,真是惭愧,我第一次用strtok函数。可不可以教个朋友?
      

  6.   

    strtok,不错啊,又学了一招~~
    谢谢keiy()
      

  7.   

    CString s="aaa bbb ccc ddd";
    char a1[4],a2[4],a3[4],a4[4];
    sscanf(s,"%[^ ] %[^ ] %[^ ] %[^ ]",a1,a2,a3,a4);
    AfxMessageBox(a4);
      

  8.   

    这个问题很简单的嘛,用标准C函数不就行了嘛char szNameString={"aa ss dd ff"};
    char *szName[3]={0};memset(szName,'\0',3);
    strncpy(szNameString,szName,2);     //szName is "aa"
    memset(szName,'\0',3);
    strncpy(szNameString+3,szName,2);     //szName is "ss"
    memset(szName,'\0',3);
    strncpy(szNameString,szName+6,2);     //szName is "dd"
      

  9.   

    首先有一个问题:szName是指针数组,保留空间为0
    另外一个问题:szName只有三个,而你却用了4个
    可以这样做
    char szName[4][_MAXPATH];_stscanf(szNameString, _T("%s %s %s %s"), szName[0], szName[1], szName[2], szName[3]);