reverse.c - OpenLearning
// by Sabrina Rispin
// Activity Section: 6
// Date: 18/4/15
// Description: the function reverse takes in a pointer and returns a
// pointer to a string that is the reverse of the string taken in.

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>

char *reverse (char *message);
void testReverse (void);

int main (int argc, char * argv[]) {
    //testReverse ();
    return EXIT_SUCCESS;
}

char *reverse (char *message) {
    assert (sizeof (message) != 0);
    // sets aside memory for the new pointer with length of message
    char *buffer = malloc ((strlen (message) + 1) * sizeof (char));

    // clear the memory
    int count = 0;
    while (count <= strlen (message)) {
        buffer[count] = '\0';
        count++;
    }

    // for each char in message store them in buffer going backwards
    int counter = 0;
    while (counter < strlen (message)) {
        buffer[strlen (message) - 1 - counter] = message[counter];
        //printf ("%c\n", message[counter]);
        //printf ("%c\n", buffer[strlen (message) - counter - 1]);
        counter++;
    }

    printf ("%s\n", buffer);
    message = buffer;
    //free (buffer);

    return message;
}

void testReverse (void) {
    char *pointer = "tree";
    printf ("%s\n", pointer);
    printf ("%s\n", reverse (pointer));
    pointer = "abcdefghijklm";
    printf ("%s\n", pointer);
    printf ("%s\n", reverse (pointer));
    pointer = "1234aBcD";
    printf ("%s\n", pointer);
    printf ("%s\n", reverse (pointer));
    pointer = "treesAreGreen";
    printf ("%s\n", pointer);
    printf ("%s\n", reverse (pointer));
    pointer = "right";
    printf ("%s\n", pointer);
    printf ("%s\n", reverse (pointer));
}

Download file: reverse.c (1.7 KB)

Comments

Chat