// 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)