删除char数组指针中的重复项

时间:2013-11-29 08:01:19

标签: c arrays pointers

我在liste_tmp中有一些指针数组,值为“123”,“456”,“123”

宣言:

char  *no_rlt_liste[5] , *liste_tmp[5]; int i, j, count =0;
for (i = 0 ; i < n; i++){
    for ( j= 0 ; j< count; j++){
            if (liste_tmp[i] == no_rlt_liste[j]){
                    break;
            }
            if (j == count){
                    no_rlt_liste[count]  = liste_tmp[i];
                    printf(" ENTER\n");
                    count++;
            }
    }
}
for (i = 0 ; i < count; i++)
    printf("Final result %s\n", no_rlt_liste[i]);

上面的代码不会产生结果。无法识别错误。 任何帮助? 感谢

2 个答案:

答案 0 :(得分:3)

由于条件for,您的j< count循环永远不会运行,并且您已设置count =0

答案 1 :(得分:2)

您将count初始化为0会导致内部for循环无法执行(因为j < 0始终为false),因此您的整个循环无效。

for (i = 0 ; i < n; i++)
{
  int flag = 0;
  for (j= 0; j< count; j++)
  {
    if (liste_tmp[i] == no_rlt_liste[j])
    {
      flag = 1
      break;
    }
  }
  if (!flag)
  {
      no_rlt_liste[count]  = liste_tmp[i];
      printf(" ENTER\n");
      count++;
  }
}

另外,请注意,如果您不想比较char-pointers,则需要使用strcmp,而不是它们的内容:

   if (strcmp(liste_tmp[i], no_rlt_liste[j]) == 0)
   {
      flag = 1
      break;
   }