Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In C++ Define a C-string function void mirror(char * w) that reverses the order

ID: 3902758 • Letter: I

Question

In C++

Define a C-string function

void mirror(char * w)

that reverses the order of the characters in w. For example, if w is "green" than after calling mirror(w), w will be "neerg" (meaning, "red" since that's opposite green on the color wheel!). Use pointer notation. No square brackets allowed. Hint: get a pointer p to the last character in w (before the null terminator). Then swap *w and *p. Next, increment w and decrement p to continue the process until p <= w.

http://www.chabotcollege.edu/Faculty/jtraugott/CodeLab/mirror.cpp

Explanation / Answer

Program

#include <string.h>
#include <iostream>

using namespace std;

void mirror(char *w);

int main()
{
    char s[] = "green";
    mirror(s);
    cout << s << endl;
}
void mirror(char *w)
{
    char *pEnd = w + (strlen(w) - 1);
    while (w < pEnd)
    {
        char c = *w;
        *w++ = *pEnd;
        *pEnd-- = c;
    }
}

Output

neerg