首页 > 解决方案 > 如何使用 strtok()/strtok_r() 分割一行

问题描述

我正在使用 C 编写一个基本的 shell。shell的结构非常简单:

  1. 获得输入,
  2. 解析输入,
  3. exe commemt。

为了获得输入,我的教授需要使用getline(),所以我输入的返回类型是char *。我将输入传递给函数parse_input(line)并使用strtok()/strtok_r()来拆分输入。但我这里有问题。分裂时我得到空值。我的教授要求我使用strtok()/strtok_r()来拆分。我在这里附上了我的代码图像。如果我使用,我可以拆分,char[]但这里是char*. 我不知道如何解决这个问题。

char *parse_line(char *line){
    int index = 0;
    char *token;
    // char **tokens = malloc(buffs * sizeof(char*));
    
    //token = strtok_r(line,TOKEN_SPLIT,&line);
    token = strtok(line, TOKEN_SPLIT);
    printf("token: %s\n",token);
    while(token != NULL){
    // tokens[index++] = token;
    printf(" %s\n", token);
    token = strtok(NULL, TOKEN_SPLIT);
    }
    return token;
}

标签: cshell

解决方案


推荐阅读