双指针arithimethic,遍历数组字符串的字符

时间:2012-11-14 04:29:19

标签: c arrays string pointers traversal

请帮助我理解我的双指针算法错误。我知道我显然做了不正确的事但是什么?看看我标记的行,“坏指针”。我的直觉告诉我这应该有效,但我猜不是。用C编程。

/*
 *This function searches for prefixes within the string array.
 *@param stringArray array containing strings
 *@param searchPrefix a string or characters to search for at beginning of string
 *@return void
 */
 void prefixSearch(char* stringArray[SIZE], char* searchPrefix){
int count = strlength(searchPrefix);//size of the prefix search
while(count > 0){
    if(**stringArray == *searchPrefix){
        printf("%c match %c\n", **stringArray, *searchPrefix);
        **stringArray++;//want to move to next character, instead get bad pointer.
        *searchPrefix++;//moves to next char
    }else{
        stringArray++;//no match, go to next string
    }
    count--;//decrement
}

}

2 个答案:

答案 0 :(得分:1)

*++运算符具有相同的优先级和从右到左的关联性,因此不工作的行解析如下:

*(*(stringArray++));

我实际上并不理解您的代码,但由于取消引用运算符无效,因此无法实现您的意图。大概你想要这个:

(**stringArray)++;

答案 1 :(得分:1)

你必须转移到下一个角色

使用

(*stringArray)++代替**stringArray++

searchPrefix++代替*searchPrefix++