Изменения строки в функции
Собственно задание заключается в написании функции, которая заменяет содержимое указанной строки этой же строкой, но с обратным порядком следования символов. Почему строка не переворачивается?
#include <stdio.h>
#include <string.h>
#include "s_gets.h"
#define SIZE 30
void revers(char *);
int main(){
char str[SIZE];
s_gets(str, SIZE);
revers(str);
puts(str);
return 0;
}
void revers(char * str){
int size_ = strlen(str) - 1;
char tmp;
for(int i = size_; i >= 0; i--){
tmp = str[i];
str[i] = str[size_ - i];
str[size_ - i] = tmp;
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы ее переворачиваете 2 раза:
for(int i = size_; i >= 0; i--)
{
tmp = str[i];
str[i] = str[size_ - i];
str[size_ - i] = tmp;
}
Когда i принимает некоторое значение j, и когда size_-j.
Ограничьтесь одном проходом.
for(int i = size_, j = 0; i > j; i--, j++)
{
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
}