在数组指针中验证每个元素到另一个元素

时间:2011-02-16 21:31:17

标签: c

C专家, 我有一个指向字符串的数组。我需要将每个数组元素与所有其他数组元素进行比较,如果它们相同则抛出错误。这是我写的一段代码并被卡住了。请帮帮我。

# define FOUND 1
# define NOTFOUND 0

int k,flag,a;
char cmp_string[10]; //used to get one array element to compare with all other array elements

char *values[]={010,020,030,040}; //valid case that's how it should be
char *vales[]={010,020,020,030}; wrong or throw error because in array i should have only unique values

int size=4;
for(k=0; k<=size;k++){
    strcpy(values[k],cmp_string);
    flag=NOTFOUND;

    int counter=k+1;

   for(int n=counter;n<=size;n++)
   {
       a=((strcmp(values[n],cmp_string) || (strcmp(values[k-1],cmp_string)))
      // stuck here what if k value is 2 I wont be able to compare with zero or first element of array.

       if(a==0){
        throw error same name for the operation
        flag=FOUND;
        break;
   }
 }//for int n;

}//for int k;

if(flag==NOTFOUND){
    True or PASS
}
}

2 个答案:

答案 0 :(得分:2)

快速解决方案:对数组进行排序(使用例如内置qsort函数),然后扫描它比较相邻元素;如果两个是相同的,你就会重复。

如果在比较函数中您发现两个比较项目相同,您也可以在完成排序之前知道您有重复项。

答案 1 :(得分:0)

如果我正确理解了您的问题,那么您尝试将strcmp变为非零,如果字符串相同则返回非零值,否则为零:

a = (strcmp(whatever) != 0) || (strcmp(whatever else) != 0);