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