C - strsep 拆分字符串
C - strsep splitting strings
我在 C 中为我的 simpleShell 程序创建了一个 parseCmd 方法,并将每个参数存储在分隔符空白之前,以存储在我的 args[] 数组中。但是,我试图将参数及其各自的参数添加到链表中,但我无法获取它们。
例如,如果我输入 ls
,我想要:
args[0] = "ls";
当我输入 ls -l
时,我想要;
args[0] = "ls";
args[1] = "-l";
我想在这里做的是:如果检测到“-”参数,将其附加到前一个参数 "ls" 并另存为单独的字符串 "ls -l" 以存储到linkedList(已经实现)。
这是我的方法。
void parseCmd(char* cmd, char** args)
{
int i;
for(i = 0; i < MAX_LINE; i++) {
args[i] = strsep(&cmd, " ");
if (args[i] != NULL)
printf("--> %s \n",args[i]);
if(args[i] == NULL) break;
}
}
编辑:
我尝试了以下方法
if (strchr(args[i], '-'))
printf("--> %s \n", args[i]);
但是我遇到了段错误。
字符串是一个字符数组。你意识到 args 是一个 char**,所以基本上它是一个数组数组。您可以检查 args 条目是否包含“-”,如果是,则可以执行简单的字符串连接并将该值添加到 args。检查字符串第一个字符的值。
以编程方式,
if(args[i][0] == '-')
<Insert code for concatenation>
我在 C 中为我的 simpleShell 程序创建了一个 parseCmd 方法,并将每个参数存储在分隔符空白之前,以存储在我的 args[] 数组中。但是,我试图将参数及其各自的参数添加到链表中,但我无法获取它们。
例如,如果我输入 ls
,我想要:
args[0] = "ls";
当我输入 ls -l
时,我想要;
args[0] = "ls";
args[1] = "-l";
我想在这里做的是:如果检测到“-”参数,将其附加到前一个参数 "ls" 并另存为单独的字符串 "ls -l" 以存储到linkedList(已经实现)。
这是我的方法。
void parseCmd(char* cmd, char** args)
{
int i;
for(i = 0; i < MAX_LINE; i++) {
args[i] = strsep(&cmd, " ");
if (args[i] != NULL)
printf("--> %s \n",args[i]);
if(args[i] == NULL) break;
}
}
编辑:
我尝试了以下方法
if (strchr(args[i], '-'))
printf("--> %s \n", args[i]);
但是我遇到了段错误。
字符串是一个字符数组。你意识到 args 是一个 char**,所以基本上它是一个数组数组。您可以检查 args 条目是否包含“-”,如果是,则可以执行简单的字符串连接并将该值添加到 args。检查字符串第一个字符的值。
以编程方式,
if(args[i][0] == '-')
<Insert code for concatenation>