gpt4 book ai didi

c - memcmp 比较数组的段(删除重复项)

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:58 24 4
gpt4 key购买 nike

我已经为此工作了一段时间(用 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为数组元素总数。运行代码时,我不断遇到段错误。

谢谢大家的帮助!

最佳答案

你写道:

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

memcmp() 接受指针。您可能指的是 buffer+ibuffer+i+nValue 作为参数。如果那是答案,我很惊讶您的编译器没有对此发出警告。您是否激活了警告?

关于c - memcmp 比较数组的段(删除重复项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com