+ -
当前位置:首页 → 问答吧 → 通过strtok函数后怎么存到相应的数组中去?

通过strtok函数后怎么存到相应的数组中去?

时间:2010-07-22

来源:互联网

deal_string = " aa bb cc dd ee ff "
        p = (char *) strtok ((char *) deal_string, " ");
        while(p!=NULL)
         {
              strcpy(cmd[i],p);
              i++;
              if(p!=NULL)
              p = (char *)strtok(p+strlen(p)+1," ");
         }
          year = cmd[0]*256 + 256 + cmd[1];
          month = cmd[2];
          date = cmd[3];
          hour = cmd[4];
          minute = cmd[5];
          seconds = cmd[6];
          sprintf(hanzi_string,"%d-%d-%d,%d:%d:%d",year,month,date,hour,minute,seconds);

     }
分隔出来的aa,bb,cc怎么存入到cmd[i]中去啊,用strcpy不行,p出来的是字符串组的。

作者: liumilan2009   发布时间: 2010-07-22

你先贴个能编译的代码吧

作者: hellioncu   发布时间: 2010-07-22

char *p;
        p=NULL;
        i=0;

        p = (char *) strtok ((char *) deal_string, " ");
        memset (hanzi_string, 0x00, sizeof (hanzi_string));
        memset(temp_string1,0,sizeof(temp_string1));

         if( (strstr(target_string,"enterprises.88888.2")!= NULL) || (strstr(target_string,"enterprises.88888.16" )!=NULL))
     {
          unsigned char cmd[128];
          memset(cmd,0,sizeof(cmd));
          /*char cmd[128];
          char year[128];
          char month[128];
          char date[128];
          char hour[128];
          char minute[128];
          char seconds[128];
          memset(cmd,0,sizeof(cmd));
          memset(year,0,sizeof(year));
          memset(month,0,sizeof(month));
          memset(date,0,sizeof(date));
          memset(hour,0,sizeof(hour));
          memset(minute,0,sizeof(minute));
          memset(seconds,0,sizeof(second)); */
          int year;
                 
          char date[128];
          char hour[128];
          char minute[128];
          char seconds[128];
          memset(cmd,0,sizeof(cmd));
          memset(year,0,sizeof(year));
          memset(month,0,sizeof(month));
          memset(date,0,sizeof(date));
          memset(hour,0,sizeof(hour));
          memset(minute,0,sizeof(minute));
          memset(seconds,0,sizeof(second)); */
          int year;
          int month;
          int date;
          int hour;
          int minute;
          int seconds;
          while(p!=NULL)
          {
              strcat(cmd,p);
          if(p!=NULL)
          p = (char *)strtok(p+strlen(p)+1," ");
          }
          year = cmd[0]*256 + 256 + cmd[1];
          month = cmd[2];
          date = cmd[3];
          hour = cmd[4];
          minute = cmd[5];
          seconds = cmd[6];
          sprintf(hanzi_string,"%d-%d-%d,%d:%d:%d",year,month,date,hour,minute,seconds);

     }

作者: liumilan2009   发布时间: 2010-07-22

简单的说就是
char b[50] = " aa bb cc dd ee ff gg ";
然后想把
cmd[0] =aa;
cmd[1] = bb;
cmd[2] = cc;
…………
然后
通过cmd[i]计算出year,month,date

作者: liumilan2009   发布时间: 2010-07-22

还是stringstream好

作者: mirnshi   发布时间: 2010-07-22

写得真啰嗦,LZ还是sscanf吧

作者: hellioncu   发布时间: 2010-07-22



QUOTE:
写得真啰嗦,LZ还是sscanf吧
hellioncu 发表于 2010-07-22 15:57




c程序太复杂了,搞出这么多可以做一件事的函数。

作者: mirnshi   发布时间: 2010-07-22

我用int cmd[128]类型,就能直接复制了。

作者: liumilan2009   发布时间: 2010-07-22

或者你可以这么做:
strtok后,将字符串截断,对末尾:*p = '\0',然后建立指针数组。

作者: mirnshi   发布时间: 2010-07-22