【问题标题】:C - strsep splitting stringsC - strsep 分割字符串
【发布时间】:2015-12-09 04:00:01
【问题描述】:

我在 C 中为我的 simpleShell 程序创建了一个 parseCmd 方法,并将每个参数存储在要存储在我的 args[] 数组中的分隔符空格之前。但是,我正在尝试将带有各自参数的参数添加到链接列表中,但我无法获取它们。

例如,如果我输入ls,我想要:

args[0] = "ls";

当我输入ls -l 时,我想要;

args[0] = "ls";
args[1] = "-l";

我在这里要做的是:如果检测到“-”参数,则将其附加到前一个参数“ls”并另存为单独的字符串“ls -l”以存储到链接列表中(已经实现)。

这是我的方法。

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]);

但我遇到了段错误。

【问题讨论】:

  • 你的问题是什么?
  • 问题是什么?您可能会在找到问题的同时找到答案。
  • 我正在尝试连接字符串数组中的两个字符串,前提是字符串数组中的第二个值以“-”开头,因此我可以在后续参数中附加 -(参数)跨度>

标签: c linked-list strsep


【解决方案1】:

String 是一个字符数组。你意识到 args 是一个 char**,所以基本上它是一个数组数组。您可以检查 args 条目是否包含“-”,如果为真,则可以执行简单的字符串 concat 并将该值添加到 args。检查字符串第一个字符的值。

以编程方式,

if(args[i][0] == '-')
    <Insert code for concatenation>

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2020-11-22
    • 1970-01-01
    • 2022-09-28
    • 2015-01-21
    • 2020-06-30
    相关资源
    最近更新 更多