C - 存储 strtok 的结果?

C - Store the results of strtok?

所以我正在尝试将我的输入作为 file.txt,r 并且我必须在逗号上拆分字符串并将 file.txtr 保存到单独的字符串中...但是我真的很困惑该怎么做。我抬头 strtok 这是我目前所拥有的:

 char buffer[256];
 char filename[2][40];
 char operation[20]; 
n = read(sock,buffer,255);    //read the message from the client into buffer
char cinput[300];
strcpy(cinput,buffer);//now cinput has the whole thing

   char *token;

   token = strtok(cinput,",");

   while(token)
   {
       printf("%s\n",token);
       token = strtok(NULL,",");
   }

但我很困惑...我如何在解析后将 file.txtr 存储为单独的字符串?

编辑:像这样的?

       char *token;

   char *pt;

   pt = strtok(cinput,","); //this will hold the value of the first one
   strcpy(filename,pt);


   token = strtok(cinput,",");
   while(token)
   {
       //printf("%s\n",token);
       token = strtok(NULL,",");
   }
   printf("%s\n",token); //this will hold the value of the second one

   strcpy(operation,token);

   printf("%s\n",operation);

您所需要的只是单独的指针。您不需要分配所有这些缓冲区或使用 strcpy().

只需将 strtok() 中的 return 值分配给多个 char * 指针。

类似于:

char *p1 = strtok("file.txt,r", ",");
char *p2 = strtok(NULL, ",");

可能是一种紧凑的方法

//your data pattern 
    typedef
    struct file_inputs {
        char *fname;
        char *fmode;
    } finput_t;

以及您代码中的某些地方

finput_t fi;

fi.fname = strtok(cinput,",");
fi.fmode = strtok(NULL,",");