我一直在研究这个问题(在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是数组中元素的总数。 运行代码时我不断出现分段错误。
感谢大家的帮助!
答案 0 :(得分:5)
您写道:
memcmp(buffer[i], buffer[i+nValue], nValue);
memcmp()
需要指点。对于参数,您可能意味着buffer+i
和buffer+i+nValue
。如果这就是答案,我很惊讶您的编译器没有对此发出警告。你有没有激活警告?