我已经研究了一段时间(在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是数组中元素的总数.运行代码时我不断出现分段错误.
谢谢大家的帮助!
你写了:
memcmp(buffer[i], buffer[i+nValue], nValue);
Run Code Online (Sandbox Code Playgroud)
memcmp()
需要指点.你可能意味着buffer+i
和buffer+i+nValue
争论.如果这就是答案,我很惊讶您的编译器没有对此发出警告.你有没有激活警告?