Перевернуть строку с использованием указателя

CBeginner
Практиковаться сейчас

Введение

Указатели обеспечивают прямой доступ к памяти, и с использованием указателей мы можем получать доступ к значениям и адресам переменных и массивов в памяти и манипулировать ими. Программа, которую мы создадим в этом лабораторном занятии, будет использовать переменные-указатели для разворота заданной строки.

Примечание: вам нужно самостоятельно создать файл ~/project/main.c, чтобы практиковаться в написании кода и узнать, как компилировать и запускать его с использованием gcc.

cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main

Объявить переменные строк

Начнем с объявления двух массивов char: один для исходной строки и другой для перевернутой строки.

char str[100];
char rev[100];

Объявить указательные переменные

Теперь мы объявим две переменные-указатели: одну, которая будет указывать на первый элемент строки'str', и другую, которая будет указывать на первый элемент перевернутой строки'rev'.

char *sptr = str;
char *rptr = rev;

Получить ввод от пользователя

Мы попросим пользователя ввести строку, которую он хочет перевернуть, с использованием функции scanf:

printf("Enter a string: ");
scanf("%s", str);

Найти конец строки

Нам нужно найти конец строки, чтобы мы могли начать обходить ее в обратном порядке. Мы будем использовать цикл while для инкрементирования sptr, пока он не будет указывать на нулевой символ в конце строки.

while(*sptr)
{
   sptr++;
}

Развернуть строку

Теперь мы будем использовать цикл while для обхода строки str в обратном порядке. Мы будем декрементировать sptr, чтобы переместиться от нулевого символа до последнего символа строки, и для каждого элемента в строке мы будем хранить значение в перевернутой строке rev с использованием оператора *.

while(sptr >= str)
{
   *rptr = *sptr;
   rptr++;
   sptr--;
}

Добавить нулевой символ в конец перевернутой строки

Достигнут конец перевернутой строки. Мы должны добавить нулевой символ в конец перевернутой строки:

*rptr = '\0';

Скопировать перевернутую строку в исходную строку

Теперь мы скопируем перевернутую строку в исходную строку.

strcpy(str, rev);

Напечатать перевернутую строку

Наконец, мы выведем на печать перевернутую строку.

printf("Reversed string: %s\n", str);

Резюме

В этом практическом занятии мы узнали, как использовать указательную переменную для переворачивания заданной строки. Указатели обеспечивают прямой доступ к памяти, и с их помощью мы можем получать доступ к значениям и адресам переменных и массивов в памяти и манипулировать ими. Мы использовали цикл while для обхода строки в обратном порядке, сохранили перевернутую строку в новый массив символов и добавили нулевой символ в конец перевернутой строки. Наконец, мы скопировали перевернутую строку в исходную строку и вывели ее на печать.