Переписать строку в обратном порядке - C (СИ) (77928)
Формулировка задачи:
Дана задача "Пожалуйста, исправьте код! Очень срочно!
Введите с клавиатуры строку символов, после чего запишите ее содержимое в другую строку в обратном порядке. Далее выведите вторую строку на экран."
Моё решение. Реализовать надо на языке СИ (не СИ++)#include <stdio.h>
void main()
{
char *uk1,*uk2;
puts("Vvedite slovo");
scanf(uk2);
uk1=uk2;
while(*uk2!='\0')
putchar(*uk2++);
putchar('\n');
while(--uk2 >= uk1)
putchar(*uk2);
putchar('\n');
}Решение задачи: «Переписать строку в обратном порядке»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char buf[BUFSIZ];
char str[BUFSIZ];
int i;
int j;
fgets (buf, BUFSIZ, stdin);
for (i = strlen (buf) - 1, j = 0 ; i >= 0 ; --i, ++j )
str[j] = buf[i];
str[j] = '\0';
printf (" %s \n " str);
system ("pause");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и вводом-выводом
- Объявление переменных:
- buf[BUFSIZ] - массив для чтения строки из стандартного ввода
- str[BUFSIZ] - массив для хранения перевернутой строки
- i, j - индексы для перемещения по массивам
- Чтение строки с помощью функции fgets в массив buf
- Переменная i инициализируется значением длины строки, а переменная j - нулем. Цикл выполняется до тех пор, пока i больше или равно нулю.
- При каждой итерации значение i уменьшается на единицу, а значение j увеличивается на единицу.
- Значение buf[i] копируется в str[j]
- Последний символ в массиве str обнуляется для корректного завершения строки
- Вывод перевернутой строки с помощью функции printf
- Ожидание нажатия клавиши с помощью функции system(
pause) - Возврат 0 для завершения программы