2015-04-19 110 views
-2

我应该遍历传入的数组的字符并查找char的第一个匹配项,然后返回第一个匹配项的索引。如果没有找到char,那么我返回-1。这似乎适用于除0之外的所有字符,因为某些原因它找不到它。查找字符串中字符的第一个索引

int find_ch_index(char string[], char ch) { 
    int i = 0; 
    while (string[i++]) { 
      if (string[i] == ch) { 
        return i; 
      } 
    } 
    return -1; 
} 
+0

使用调试器。什么是我第一次达到if语句。 – FDinoff

+0

这就是为什么初学者在有明确的初始化器,条件和迭代器时被教导使用for循环的原因。 – user3125367

回答

2

您应该在while循环结束增量I:

int find_ch_index(char string[], char ch) { 
    int i = 0; 
    while (string[i]) { 
     if (string[i] == ch) { 
      return i; 
     } 
     i++ 
    } 
    return -1; 
} 
0

我是越来越增加0〜1 while循环中。

1

你永远不会找到的第一个字符,这是因为: 而(字符串[我++])

增量我从“0”到“1”,所以在“如果”永远不会将第一的声明焦炭。

退出此增量并在循环结束时执行此操作。

0

在while条件

while (string[i++]) { 

你增加索引i。因此,在下一个声明

 if (string[i] == ch) { 

您正在使用增加的索引。

该函数可以写成下面的方式

int find_ch_index(const char string[], char ch) 
{ 
    int i = 0; 

    while (string[i] && string[i] != ch) i++; 

    return string[i] == ch ? -1 : i; 
} 
相关问题