C 存储strtok的结果?

C 存储strtok的结果?,c,split,token,delimiter,strtok,C,Split,Token,Delimiter,Strtok,因此,我正在尝试以file.txt,r的形式获取输入,我必须将字符串拆分为逗号,并将file.txt和r保存为单独的字符串。。。但我真的不知道该怎么做。我抬起头来 这就是我到目前为止所做的: 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[3

因此,我正在尝试以
file.txt,r
的形式获取输入,我必须将字符串拆分为逗号,并将
file.txt
r
保存为单独的字符串。。。但我真的不知道该怎么做。我抬起头来 这就是我到目前为止所做的:

 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.txt
r
存储为单独的字符串

编辑:像这样的

       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()

只需在多个
char*
指针中从
strtok()
分配返回值

比如:

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

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

只需在多个
char*
指针中从
strtok()
分配返回值

比如:

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,",");

可能是一种紧凑的方法

//your data pattern 
    typedef
    struct file_inputs {
        char *fname;
        char *fmode;
    } finput_t;
还有一些在你的代码里

finput_t fi;

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

谢谢所以我稍微修改了我的问题。但是,当我使用strcpy()时,如何存储第一个和第二个令牌?因为如果我按照上面的方法来做,我不是要在
filename
中存储
r
吗?使用一个二维数组(filename),并在其中存储字符串。使用更高级的语言或实现一个链表,等等。。所以我稍微修改了我的问题。但是,当我使用strcpy()时,如何存储第一个和第二个令牌?因为如果我按照上面的方法来做,我不是要在
filename
中存储
r
吗?使用一个二维数组(filename),并在其中存储字符串。使用更高级的语言或实现一个链表,等等!!所以我想我实现了一些非常类似的东西。好吧,我想我的问题是我有正确的值,但我不明白如何将令牌值转换成字符串。。。由于某种原因,
strcpy(filename,pt)
不起作用,如果
pt
是指向已解析令牌的指针,那么它就可以正常工作。根据我上面的代码片段,您可以执行strcpy(buff,p1)或strcpy(buff,p2)。谢谢!!所以我想我实现了一些非常类似的东西。好吧,我想我的问题是我有正确的值,但我不明白如何将令牌值转换成字符串。。。由于某种原因,
strcpy(filename,pt)
不起作用,如果
pt
是指向已解析令牌的指针,那么它就可以正常工作。根据我上面的代码片段,您可以执行
strcpy(buff,p1)
strcpy(buff,p2)