c-make String in Reverse с вспомогательной функцией swap, использующей только указатели - PullRequest
0 голосов
/ 27 апреля 2019

Мне нужно написать следующую функцию: 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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...