c - 如何使用 strtok()/strtok_r() 分割一行
问题描述
我正在使用 C 编写一个基本的 shell。shell的结构非常简单:
- 获得输入,
- 解析输入,
- 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;
}
解决方案
推荐阅读
- r - 将数据框中的字符向量与另一个字符向量匹配并修剪字符
- azure-storage - 提高 Azure 表存储查询性能的建议
- javascript - document.querySelectorAll 选择特定输入的id
- python - pyodbc- 与 SQL Server 的连接失败
- python - 计算python列表中分类值的百分位数
- javascript - 将选择输入嵌入到从另一个具有单元格选择的 DT 生成的 DT 中
- python - 如何在 Notepadqq for Linux 中执行 Python 文件?
- mysql - 从命令行登录时 MySQL 不要求输入 root 密码
- c# - 根据c#列表中的位置创建组合
- html - 重写 CSS 和图像 URL