2015-04-19 140 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; 
} 
相關問題