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() 简单地完成使用不同定界符的字符串解析。