Напишите и протестируйте свою собственную функцию char * funct (char * str, int x), инвертирующую (за исключением символа в позиции n) строку str и возвращающую измененный str в качестве результата. Функцией функции может быть:
Это главное:
#include <iostream>
#include <cstring>
using namespace std;
char* funct(char *str, int x);
int main() {
char str1 [] = "Hello cpp";
cout << str1 << endl; // Hello cpp
cout << funct (str, 1) << endl; // pepC ollH // the character at position 1 ('e') stays in place
return 0;
}
Это моя функция:
char* funct(char *str, int x) {
int counter = 0;
do {
counter++;
str++;
} while (*str);
str--;
char *wskTmp = str;
for (int i = 0; i < counter ; i++) {
*wskTmp = *str;
str--;
wskTmp++;
}
*wskTmp = '\0';
wskTmp = wskTmp - counter;
for (int i = 0; i < counter - x -1; i++) {
wskTmp++;
}
char tmp;
for (int i = 0; i < counter-3; i++) {
tmp = *(wskTmp - 1);
*(wskTmp - 1) = *wskTmp;
*wskTmp = tmp;
wskTmp--;
}
return str;
}
Вывод:
Hello Cpp
Hello Cppep C ollH
Должно быть:
Hello Cpp
pep C ollH
Почему он дает мне Hello Cp перед "pep C ollH"?