Введение
Указатели обеспечивают прямой доступ к памяти, и с использованием указателей мы можем получать доступ к значениям и адресам переменных и массивов в памяти и манипулировать ими. Программа, которую мы создадим в этом лабораторном занятии, будет использовать переменные-указатели для разворота заданной строки.
Примечание: вам нужно самостоятельно создать файл
~/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 для обхода строки в обратном порядке, сохранили перевернутую строку в новый массив символов и добавили нулевой символ в конец перевернутой строки. Наконец, мы скопировали перевернутую строку в исходную строку и вывели ее на печать.



