1

我已经研究了一段时间(在 C 中)并且无法弄清楚。我有一个包含字符数组的缓冲区。我已经使用 qsort 对数组进行排序,现在一切都井井有条。我现在需要删除重复项(或者只是打印出没有重复项的列表)。有一个警告:字符被分组为 N 个字符组(N 由用户给出)。因此,这不仅仅是将一个字符与另一个字符进行比较;它正在将它们的组相互比较。

例如:如果输入是 AADDBBEECCEE 并且用户给出的 N 是 2,则结果将是 AABBCCDDEE(删除了 EE 之一)。

我知道我必须使用 memcmp,但我对语法感到困惑。我正在努力:

i=0;
int result;
int k;
while(i<bufferSize-nValue){
    result = memcmp(buffer[i], buffer[i+nValue], nValue);
    if(result==0){
       i=i+nValue;
    }
    else{
       for(k=0; k<nValue; k++){
          printf("%c",buffer[i]);
          i++;
        }
     }
 }

其中 buffer 是数组,nValue 是 N,bufferSize 是数组中元素的总数。运行代码时,我不断收到分段错误。

谢谢大家的帮助!

4

1 回答 1

5

你写了:

memcmp(buffer[i], buffer[i+nValue], nValue);

memcmp()需要指针。你可能的意思是buffer+ibuffer+i+nValue论据。如果这是答案,我很惊讶您的编译器没有对此发出警告。你激活警告了吗?

于 2011-10-31T09:43:04.973 回答