在C中获取指针数组的第一个元素?

时间:2017-06-25 23:22:49

标签: c readline

我现在一直在寻找如何做到这一点。到目前为止,我发现的方法并没有取得成功。

GNU Readline Info

在该页面中,有一个名为fileman.c的示例程序,特别是此函数:

Pattern p = Pattern.compile("is (.+)");
stream1.map(p::matcher)
       .filter(Matcher::find)
       .forEach(matcher -> System.out.println(matcher.group(1)));

我试图了解如何以这种方式访问​​char *单词以便能够检查它的元素?例如 - 如果我想检查char *字的第一个元素是'#'并且基于那个做某些逻辑,而不是当这个词从其他任何东西开始时?我是C的新手,发现我已经习惯了很多其他语言的东西;咳嗽Python;在C中本质上更难。

谢谢!

2 个答案:

答案 0 :(得分:0)

哦,天哪,这个古老的函数参数语法!

要检查指针数组的第一个元素,只需使用ptr_name[0]其中" ptr_name"是指针数组的名称/标识符。

如果您正在尝试查看特定字符是否为井号/井号。只需这样做:

if( word[0] == '#' ) // run code

答案 1 :(得分:0)

我能用一个标记器来解决这个问题。

/*Tokenizer, splits the arguments and detects presence of i/o or piping.*/
void Tokenize(char *sentence, char** StorageArray, char * delimiter)
{
    char *token;
    char *next_token;
    int counter = 1, position = 0;
    token = strtok(sentence, delimiter);
    next_token = token;
    while (next_token != NULL){
        TokenCount++;
        StorageArray[position] = token;

        /*Check for input / output markers*/
        if(strcmp(StorageArray[position], "<") == 0){ flagInput = 1;}
        if(strcmp(StorageArray[position], ">") == 0){ flagOutput = 1;}
        /*Check for pipeline instructions.*/
        if(strcmp(StorageArray[position], "|") == 0){ flagPipeInst = 1;}

        position++;
        if((next_token = strtok(NULL, delimiter))){
            token = next_token;
        }
        counter++;
    }
    counter--;
}

在将内容传递给执行命令之前,我获得了所有令牌。