memcmp比较数组的片段(删除重复)

pau*_*ago 1 c qsort memcmp

我已经研究了一段时间(在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++;
        }
     }
 }
Run Code Online (Sandbox Code Playgroud)

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

谢谢大家的帮助!

Pas*_*uoq 5

你写了:

memcmp(buffer[i], buffer[i+nValue], nValue);
Run Code Online (Sandbox Code Playgroud)

memcmp()需要指点.你可能意味着buffer+ibuffer+i+nValue争论.如果这就是答案,我很惊讶您的编译器没有对此发出警告.你有没有激活警告?