Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра. - C (СИ)

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

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

Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра. Что не так???
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
chang(char s[100])
   {
       char c;
       int i,k;
     for(k=0;s[k]!='\0';k++);
     for(i=0;i<(k/2);i++)
       {
     c=s[i];
     s[i]=s[k-1-i];
     s[k-1-i]=c;
       }
   }
 
main()
{
      char str[100];
     printf("Vvedite stroky:\n");
     scanf("%s,&str");
     printf("\n\nNovaya stoka:%s ",chang(str));
 
}

Решение задачи: «Написать и протестировать функцию, которая "переворачивает" строку, передаваемую ей в качестве параметра.»

textual
Листинг программы
for ( t = s; *t; ++t ) ; // цикл(от первого символа; до символа конца строки; следующий символ)
for ( h = s, t -= 1; h < t; ++h, --t ) // h от первого символа, t от последнего символа; до серидины строки; обе переменные движутся к центру строки. h плюсуется т.к. он начала, а t в минус т.к. с конца строки идет
{
   // следующие три операции меняют
   // данные между переменными *h и *t
   // т.е. вначале мы меняем первую и последние буквы
   // следующая итерация - меняем вторую и предпоследнюю буквы
   // и т.д. до середины строки
   c = *h; 
  *h = *t; 
  *t = c;
}

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

  1. Первый цикл начинается с инициализации переменной t значением s и выполняется до тех пор, пока *t не станет равным \0 (т.е. до конца строки). Переменная t увеличивается на 1 после каждой итерации цикла.
  2. Второй цикл начинается с инициализации переменных h и t значением s. Переменная h увеличивается на 1, а переменная t уменьшается на 1 после каждой итерации цикла. Цикл выполняется до тех пор, пока h меньше t (т.е. до середины строки).
  3. Внутри второго цикла выполняется следующая операция:
    • Переменная c инициализируется значением символа, на который указывает переменная h (т.е. первый символ строки).
    • Значение переменной h заменяется значением переменной t (т.е. последний символ строки).
    • Значение переменной t заменяется значением переменной c (т.е. первый символ строки).
    • Эта операция повторяется для каждой итерации второго цикла (т.е. для каждой пары символов, начиная с первого и последнего символов строки, и двигаясь к середине строки).
  4. Результатом выполнения функции будет перевернутая строка, которая будет содержаться в переменной s.

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

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