Итак, у меня есть массив строк, содержащий дубликаты. Моя общая цель - удалить дубликаты и соответственно изменить размер массива. Наилучшим способом решения этой проблемы до сих пор было использование функции memmove ().
Мой текущий подход к тестированию - это l oop через массив и сканирование каждого элемента. Если строка встречается более одного раза, я бы перезаписал дубликат следующим элементом в списке, используя memmove (). Каждый элемент в списке также будет перемещен на одну позицию вверх в массиве с помощью memmove (). Затем я бы изменил размер всего массива, чтобы удалить пустые ячейки памяти в конце массива.
Я объявил массив следующим образом:
char source[43][20];
Массив представляет собой просто список городов (я включил только первые 6 для демонстрации):
York
Leeds
Liverpool
Manchester
Reading
Oxford
Мне удалось перезаписать первый элемент вторым элементом со следующим кодом:
memmove(&(source[0][0]), &(source[1][0]), strlen(source[1]) * sizeof(char));
Давая это вывод:
Leeds
Leeds
Liverpool
Manchester
Reading
Oxford
, но когда я пытаюсь перезаписать третий элемент поверх второго с помощью этого кода:
memmove(&(source[1][0]), &(source[2][0]), strlen(source[2]) * sizeof(char));
, я получаю следующий результат:
Leeds
Liverpooφu
Liverpool
Manchester
Reading
Oxford
Как видите, «Ливерпуль» работает не так, как задумано. В настоящее время я не знаю, как изменить размер массива, поэтому буду благодарен за любые идеи по этому поводу. Благодарю за любую помощь, ребята :).