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