memcmp для сравнения сегментов массива (удаление дубликатов) - PullRequest
1 голос
/ 31 октября 2011

Я работал над этим некоторое время (в 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++;
        }
     }
 }

где буфер это массив, nValue это N, bufferSize это общее количество элементов в массиве.Я продолжаю получать ошибку сегментации при запуске кода.

Спасибо за вашу помощь всем!

1 Ответ

5 голосов
/ 31 октября 2011

Вы писали:

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

memcmp() принимает указатели.Вы, вероятно, имеете в виду buffer+i и buffer+i+nValue в качестве аргументов.Если это ответ, я удивлен, что ваш компилятор не предупредил об этом.Вы активировали предупреждения?

...