Функция для "переворота" строки - C (СИ)
Формулировка задачи:
Добрый день!
Собственно необходимо создать свою функцию для "переворота" (вместо "фыв" - "выф") строки.Готовая функция strrev не подходит.Выкладываю свои кривые наработки ,буду рад любым советам.
#include <conio.h>
#include <stdio.h>
#include <string.h>
char rev(char str[100])
{int len,i; char t[100];
len=strlen(str);
for(i=0;i<len/2;i++)
{ t[i]=str[i];
str[i]=str[len-i-1];
str[len-i-1]=t[i];
}
return str;
}
void main(void)
{ char str[100],n_str[1000]; int i;
n_str=rev(str);
printf ("%s\n",n_str );
getch();
}Решение задачи: «Функция для "переворота" строки»
textual
Листинг программы
void StrRev(char *S)
{
int i,j,l;
char t;
l=strlen(S);
i=0;
j=l-1;
while (i<j)
{
t=S[i];
S[i]=S[j];
S[j]=t;
i++;j--;
}
}
Объяснение кода листинга программы
- В функции объявлены три переменные: i, j, l типа int.
- Переменная l инициализируется значением длины строки S с помощью функции strlen.
- Переменные i и j инициализируются значениями 0 и l-1 соответственно.
- В цикле while происходит обмен символами между позициями i и j строки S до тех пор, пока i меньше j.
- Внутри цикла значения переменных i и j инкрементируются и декрементируются соответственно.
- Значение переменной t в каждой итерации цикла равно значению S[i].
- Значение S[i] присваивается значению S[j], а значение S[j] присваивается значению t.
- По завершении цикла, строка S переворачивается.