C - 存储 strtok 的结果?
C - Store the results of strtok?
所以我正在尝试将我的输入作为 file.txt,r
并且我必须在逗号上拆分字符串并将 file.txt
和 r
保存到单独的字符串中...但是我真的很困惑该怎么做。我抬头 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.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()
.
只需将 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,",");
所以我正在尝试将我的输入作为 file.txt,r
并且我必须在逗号上拆分字符串并将 file.txt
和 r
保存到单独的字符串中...但是我真的很困惑该怎么做。我抬头 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.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()
.
只需将 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,",");