在c中找到最大的指数

时间:2014-10-17 20:25:13

标签: c indexing

我想编写一个函数来查找字符串中字符的最大索引。但是当索引已经找到一次时,它可能不会返回它 例如
字:“你好”
字符:l
索引集= {};
预期回报值= 3

当我再次执行此功能时:
字:“你好”
字符:l
索引集= {3};
预期回报值= 2

这就是我为indexset分配空格的方法:

*indexset = (int*) malloc(strlen(am->transposition)*sizeof(int));

在我的代码中,每个字符的每个索引都有足够的空间。 我的功能是找到最大的指数:

int findBiggestIndex(char karakter,char* woord,int* indexset, int *size){
    int i=0,index;
    for(i=0;i<strlen(woord);i++){
        if(karakter==woord[i] && !inArray(indexset,i,*size)){
            index=i;
            printf("%d",*size);
            indexset[*size]=index;
            (*size)++;
        }
    }
    return index;
}

方法inArray():

#define TRUE 1
#define FALSE 0
int inArray(int* arr, int a, int size){
    int i=0;
    for(i=0;i<size;i++){
        if(arr[i]==a){
            return TRUE;
        }
        return FALSE;
    }
}

inArray方法也在findBiggestIndex之前声明,所以这不是问题。 请帮忙

1 个答案:

答案 0 :(得分:0)

我想编写一个函数来查找字符串中字符的最大索引。

如果你想在字符串中找到最后一个字符......
循环遍历字符串并比较char元素:

类似

int findLastIndex(char *str, char c)
{
    int keep = 0, i, len;
    if(str)
    {
        len = strlen(str);

        for(i=0;i<len ;i++)
        {
            if(str[i] == c) keep = i;   
        }
        return keep;//0 means nothing found
    }
    return -1;//means problem with input string
}

int main(void)
{
     int cnt= findLastIndex("only 1 g in line", 'g');
     //cnt should return as 7 for these inputs

         cnt= findLastIndex("2 g's in line(g)", 'g');
     //cnt should return as 14 for these inputs
     return 0;
}  

literal string arguments:  
|0|1|2|3|4|5|6|7|8|9|0|1|2|3|4|5|
|o|n|l|y| |1| |g| |i|n| |l|i|n|e|
               ^  
|2| |g|'|s| |i|n| |l|i|n|e|(|g|)|
                             ^

因此,对于第一个arg,应该看索引为7,对于第二个arg,应该看到14为