char buffer[80];
strcpy(buffer,"12345678890@qwerrtty@jdljfijfsdk");
我想以@为间隔分离出字符串,怎么做?如果我想取buffer中前5个字符组成的字串,该怎么做?谢谢!

解决方案 »

  1.   

    char *strDelimit= "@";
    char *strtok( char *strToken, const char *strDelimit );char buffer2[80];
    strncpy(buffer2,buffer,5);
      

  2.   

    njypch(七世倾情) :谢谢你!
    我定义char buffer2[40];
    buffer2=strtok( strToken, strDelimit);这样不对,提示char* 不能转化为char[],他们怎么转化?
      

  3.   

    int Devide_Str(char *str_in, char* str_out[], char flag)
    {
         char     *buf;
         char     *p;
         int       i = 0;

         buf = strdup(str_in);
         p = buf;
         p++;
         str_out[i++] = p;
         while(*p++ != '\0'){
         if(*p == flag){
    *p = '\0';
    str_out[i++] = ++p;
         }
      }
      return i;
      /*****************使用方法
    char *r[32];
    memset(r,0,sizeof(r));

    Devide_Str("12345678890@qwerrtty@jdljfijfsdk",r,'@');
    ........
    free(r[0]-1);
       **************************/
    }
      

  4.   

    char str1[50];
    char str2[50];
    char str3[50];
    sscanf(buffer, "%s@%s@%s@%s", str1, str2, str3);
    呵呵,这样就能提取出来了
      

  5.   

    定义 char strDelimit[] = "@";
      

  6.   

    分隔@字符串用AfxExtractSubstring
    取前面五个字符串用memcpy或者strncpy都可以
      

  7.   

    nonocast(如果你信仰光明,那是因为到处都是黑暗!):我试过你的方法,不行,buffer中的内容都取到str1中了,str2和str3是空的
      

  8.   

    char *strToken;
    char buffer[80];
    strcpy(buffer,"12345678890@qwerrtty@jdljfijfsdk");strToken = strtok(buffer, "@");
      

  9.   

    char *strDelimit= "@";
    char *strToken;
    char buffer[100];
    strcpy(buffer,"12345678890@qwerrtty@jdljfijfsdk");strToken = strtok(buffer, strDelimit);
    以下用strToken = strtok(NULL, strDelimit);