类似于C

问题描述:

的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

假设你通过阵列尺寸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