我想编写一个函数来查找字符串中字符的最大索引。但是当索引已经找到一次时,它可能不会返回它
例如 :
字:“你好”
字符: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之前声明,所以这不是问题。 请帮忙
答案 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为