C - 获取两个分隔符之间的所有子字符串
C - get all substrings between two delimiters
我正在尝试创建一个应用程序来响应用户输入的多个命令。问题是这些命令有多个参数。一些例子是
login 'username' 'password'
add song 'song_name' 'description' 'genre' 'link'
输入被读入一个字符数组。
char recv[max]=" ";
if (read (fd, recv, sizeof (recv)) < 0)
{
perror ("[server]Error on read () from client.\n");
return errno;
}
这是使用服务器的更大 uni 项目的一部分,因此这就是使用 read() 的原因。最大值定义为 1024.
虽然我可以使用 strstr() 来识别哪个命令是哪个,但我不确定如何将用户名、密码等作为单独的子字符串获取。
我知道我可以通过将输入+命令长度复制到另一个字符来摆脱命令部分,因为它是固定的,但我很想知道如何 select 每个两个 '' 之间的子串。 strtok() 会完成这项工作吗?
提前致谢。
“以不同的方式格式化输入会更容易吗?”.
例如,给定以下多分隔符字符串:
char str[] = {"this,is|a:multi.delimited$string"};
char *dup = strdup(str);
if(dup)
char *tok = strtok(dup,",");
if(tok)
{
printf("%s\n", tok);
tok = strtok(NULL, "|");
if(tok)
{
printf("%s\n", tok);
tok = strtok(NULL, ":");
if(tok)
{
//and so on through each unique delimiter
说明如何使用 strtok() 简单地完成使用不同定界符的字符串解析。
我正在尝试创建一个应用程序来响应用户输入的多个命令。问题是这些命令有多个参数。一些例子是
login 'username' 'password'
add song 'song_name' 'description' 'genre' 'link'
输入被读入一个字符数组。
char recv[max]=" ";
if (read (fd, recv, sizeof (recv)) < 0)
{
perror ("[server]Error on read () from client.\n");
return errno;
}
这是使用服务器的更大 uni 项目的一部分,因此这就是使用 read() 的原因。最大值定义为 1024.
虽然我可以使用 strstr() 来识别哪个命令是哪个,但我不确定如何将用户名、密码等作为单独的子字符串获取。
我知道我可以通过将输入+命令长度复制到另一个字符来摆脱命令部分,因为它是固定的,但我很想知道如何 select 每个两个 '' 之间的子串。 strtok() 会完成这项工作吗?
提前致谢。
“以不同的方式格式化输入会更容易吗?”.
例如,给定以下多分隔符字符串:
char str[] = {"this,is|a:multi.delimited$string"};
char *dup = strdup(str);
if(dup)
char *tok = strtok(dup,",");
if(tok)
{
printf("%s\n", tok);
tok = strtok(NULL, "|");
if(tok)
{
printf("%s\n", tok);
tok = strtok(NULL, ":");
if(tok)
{
//and so on through each unique delimiter
说明如何使用 strtok() 简单地完成使用不同定界符的字符串解析。