Переписать строку в обратном порядке - C (СИ) (79827)

Узнай цену своей работы

Формулировка задачи:

НЕЛЬЗЯ ПОЛЬЗОВАТЬСЯ "#include<string.h">

ЗАД№1 Введите с клавиатуры строку символов, после чего запишите ее содержимое в другую строку в обратном порядке. Далее выведите вторую строку на экран. ЗАД №2 Введите с клавиатуры строку символов, после чего выведите на экран ее подстроку,включающую в себя символы с 5-го по 15-й. ЗАД №3Введите с клавиатуры строку символов, представляющую собой некоторое предложение. Найдите среди слов предложения самое длинное слово и выведите его на экран. №1 НЕ РАБОТАЕТ((( НЕ ПРАВИЛЬНО РАБОТАЕТ((((((((
#include <stdio.h>
#include <conio.h>
void main()
{
const int n=100;
char str[n], str2[n], *p, *k;
int i;
printf("vvedute stroky: ");
gets(str);
p=str;
k=&str2[n];
for(i=0;i<n;i++)
*(k-i)=*(p+i);
puts("\n\npreabrazovannaya stroka:\n");
puts(str2);
puts("\n");
}

Решение задачи: «Переписать строку в обратном порядке»

textual
Листинг программы
#include <stdio.h>
 
int main() {
    char src[128] = "\0";
    char dst[128] = "\0";
 
    char* psrc = &src[sizeof(src)];
    char* pdst = &dst[0];
 
    /** читаем строку */
    fgets(src, sizeof(src), stdin);
 
    /** находим ее конец */
    for ( ; *psrc == 0; psrc-- );
 
    /** реверсируем */
    for ( ; psrc != &src[0]; ) {
        *pdst++ = *psrc--;
    }
 
    printf("%s\n", dst);
 
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Создаются две строки: исходная src и целевая dst. Обе строки инициализируются нулевым символом, что является признаком пустой строки.
  2. Указатель psrc инициализируется адресом последнего элемента массива src, который считается пустым, поскольку мы только что его инициализировали нулевым символом.
  3. Указатель pdst инициализируется адресом первого элемента массива dst.
  4. Строка src считывается с помощью функции fgets().
  5. Затем ищется конец строки путем цикла, который продолжается, пока не встретит нулевой символ.
  6. После того, как найден конец строки, начинается процесс реверса строки. Для этого используется еще один цикл, который продолжается, пока не встретит нулевой символ. В каждой итерации символ копируется из исходной строки в целевую строку.
  7. Наконец, отформатированная строка выводится на консоль с помощью функции printf().
  8. Программа возвращает 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы