Удаление подстроки из массива char без использования каких-либо библиотек в C - PullRequest
0 голосов
/ 15 февраля 2020

Я студент первого курса по информатике, и наши учителя дали задание на поиск по двоичному шаблону. Мы должны удалить подстроку из строки без использования каких-либо библиотек и встроенных программ, таких как (memmove или strstr) Наш единственный намек на то, что это как-то связано с '\ 0'. Я не понимаю, как мы собираемся достичь этого, потому что, как я знаю, нулевой символ только завершает строку, но не удаляет ее. И учитывая неизвестный вклад, становится еще труднее обойти. Мне нужна помощь по использованию нулевого символа. РЕДАКТИРОВАТЬ: Да, и мы также не можем создавать новые массивы. РЕДАКТИРОВАТЬ 2: Проблема гораздо сложнее, если вы находитесь здесь для решения читать комментарии в этой теме, а также отмеченные решения.

1 Ответ

1 голос
/ 15 февраля 2020

C строки имеют нулевое окончание, что означает, что считается, что они заканчиваются везде, где появляется ноль (записано '\0' в C).

Если я начну со строки «Переполнение стека» и я перезаписываю пробел '\0', теперь у меня есть строка «Stack». Хранилище для «переполнения» все еще существует, но оно не является частью строки в соответствии с C функциями, такими как strlen(), printf() et c. Фактически, если я удержу указатель на часть «O» исходной строки, это будет так же, как если бы были две строки: «Stack» и «Overflow», и вы все равно можете использовать обе из них.

Это как если бы я приехал туда, где вы живете, и построил огромную стену через дорогу прямо перед вашим домом. Дорога теперь сокращена, и люди на моей стороне не будут знать, что ты там.

...