Мне нужно написать следующую функцию: char * Rev (char * str, int size);
Функция get *, указатель на строку. Он должен заменить порядок слов в str и вернуть результат в указателе. Нужен только обратный порядок слов. Необходимо использовать вспомогательную функцию обмена. В этой функции нигде не используется [], используются только указатели. Печать только через основную сеть.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str1,*str2,*pRev;
char *pstr="YPEFMI ICMKMS JGLYZJ";
swap(&str1, &str2);
getchar();
*pRev =*RevWords (pstr,SIZE)
return 0;
}
methods.c
void swap(char* str1, char* str2);
char * Rev(char * string, int size);
//The function replaces the contents of both strings 1s and 2s.
void swap(char* str1, char* str2)
{
// if both of them are zero characters then stop
if (*str1 == '\0' && *str2 == '\0')
return;
// else swap the contents of the pointers
else
{
char tmp = *str1;
*str1 = *str2;
*str2 = tmp;
// advance both pointer and swap them too if thye are not '\0'
swap(++str1, ++str2);
}
}
char * Rev(char * string, int size)
{ //no idea-->NOT work in reverse.
char string[SIZE * (SIZE + 1)]
char *str = (char *)(malloc (SIZE * SIZE + SIZE-1));
for (int i = 0; i < SIZE; i++) {
memcpy(string + i * SIZE, matrix + i, SIZE);
if (i < SIZE - 1) {
swap(*(string + i * SIZE + SIZE));
} else {
swap(*(string + i * SIZE + SIZE)) = 0;
}
}
return string;
}
Метод обмена работает, но метод REV НЕ работает.
Например:
pStr = YPEFMI ICMKMS JGLYZJ
pRev = -> JGLYZJ ICMKMS YPEFMI <- </p>