Я хочу перевернуть строку в определенном формате.
Например, "My name is Nishant"
следует преобразовать в "Nishant is name My"
.
Я хочу перевернуть строку в определенном формате.
Например, "My name is Nishant"
следует преобразовать в "Nishant is name My"
.
Если у вас есть слова в массиве char[] words
, это простой цикл:
for (i = 0; i < mid; i++)
exchange(words[i], words[number_of_words - i]);
для разумных определений mid
, number_of_words
и exchange
.
Если все, что у вас есть, - это большой символ, содержащий весь оператор, полезно сначала выполнить strtok
. Затем используйте вышеуказанный цикл.
Передайте привет вашему инструктору. Если это домашнее задание, вам следует написать код самостоятельно.
Вот небольшая подсказка: используйте указатель char для итерации по каждому символу в массиве, пока вы не нажмете терминатор NUL в конце. Теперь повторяйте в обратном порядке, пока не дойдете до пробела. Сохраните свое место в другом указателе, переместитесь вперед на один, затем скопируйте каждый из символов до, но не включая NUL, в свой выходной буфер.
Теперь извлеките позицию этого последнего пробела в том другом указателе, где вы сохранили свое место, и снова сделайте резервную копию. Когда вы продвигаетесь вперед, вам действительно нужно остановиться, когда вы встречаетесь либо с пробелом NULL - ASCII '\ 0', либо с нулевым байтом, а не только с NUL.
Было бы немного быстрее, если бы вы сохраняли позиции каждого из пробелов в каком-то списке, когда вы выполняете итерацию вперед в начале. Таким образом, вам не нужно выполнять итерацию назад по всей строке с короткими итерациями по каждому слову. Код будет немного сложнее.
Повышение эффективности было бы незначительным для коротких строк, таких как отдельные английские предложения, но было бы довольно много, если бы вы реверсировали большой файл, который вы только что прочитали в память.