2014-10-17 75 views
-3

的strcmp()函數使我像製作strcmp()的女巫名 的二維數組找到一個名稱函數名稱是否有它只是返回0,否則返回-1,我的問題是,當我用這個它只是在我輸入arrayOfnames的第一個元素時返回0。類似於C

int my_strcmp(char arrayOfNames[5][20], char nameToFind[20]) 
{ 
    int i,j; 
    for (j=0;j<5;j++) 
    { 
     for (i = 0; arrayOfNames[j][i] &&nameToFind[i]; ++i) 
     { 
      if (arrayOfNames[j][i] == nameToFind[i]) 
      continue; 
      else 
      break; 
     } 
     if (arrayOfNames[j][i] == nameToFind[i]) 
     return 0; 
     else //Set the 6th bit in both, then compare 
     return -1; 
    } 
} 
+1

編譯所有警告和調試信息(例如'gcc -Wall -g')。然後使用調試器(例如'gdb')。我不確定你是否給你的數組或字符串提供了固定的維度。 – 2014-10-17 09:08:27

+2

'return -1;'太早。以位於環 – BLUEPIXY 2014-10-17 09:10:43

+0

燁以外,return語句是早期的感謝BLUEPIXY – karim 2014-10-17 09:39:42

回答

1

假設你通過陣列尺寸5,20,那麼你必須爲循環第一的錯誤:

for (j=0;j<=5;j++) 

你去哪裏出界

for (j=0;j<5;j++) 

是正確的循環

然而此評論//設置兩個第6位,然後比較表示您的尺寸大於指定尺寸。

形成你的函數的更好的方法是用額外的參數指定尺寸並傳遞一個額外的數組來存儲結果。

+0

它只是return語句返回-1我不應該把它放在內循環,併爲「=」當我刪除它,它不不會傳遞到最後一個元素 – karim 2014-10-17 09:44:21