c - 如何将引用的参数作为单个参数处理?
问题描述
我正在制作一个从标准输入获取输入的外壳。
我正在尝试解析包含匹配单引号或双引号的未嵌套引用参数。(可以与未引用的参数混合)
我希望每个带引号的字符串都被视为一个参数,这样我就可以放入一个参数数组中。然后我想尝试将所有参数保存在一个数组中。
这类似于 C 可执行文件在 bash shell 中接受参数的方式。
前任:
mypersonalshell> first second "Hello World" fourth
results: [first, second, Hello World, fourth]
mypersonalshell> first second 'Hello World' fourth
results: [first, second, Hello World, fourth]
mypersonalshell> first "Hello ' World"
results: [first, Hello ' World]
我假设在空格和引号上使用 strtok 的组合,但未能正确使用该组合。
到目前为止我所拥有的
int main(int argc, char* argv[]){
int cmdNum = 1;
char *input = NULL;
size_t len = 0;
ssize_t nread;
printf("mypersonalshell[%d]> ",cmdNum);
while((nread = getline(&input, &len, stdin)) != -1){
trim(input);
if ( strcmp(input, "") == 0){
continue;
}
char *inputArgs[10];
char *token;
token = strtok(input, " ");
while(token != NULL){
// add to string array and parse here
token = strtok(NULL, s);
}
printf("mypersonalshell[%d]> ",++cmdNum);
}
free(input);
return EXIT_SUCCESS;
}
有什么建议么?
解决方案
推荐阅读
- python - 在我的井字游戏中,我在哪里合并没有人赢过
- sql-server - 有没有办法一次插入所有关系?
- python - python3.6解释器有变化吗?
- java - 如何在 Firebase Android 中获取当前用户的 Push id?
- python - 一个python函数抵消了其他
- java - Java Socket 编程异常
- generics - 我什么时候需要实现不同类型的通用接口?
- javascript - Reactjs - 组件作为道具
- ios - 在点击返回之前运行一个函数。iOS,斯威夫特,
- javascript - d3.event 的 x 和 y 坐标在显示工具提示时不正确