In: Computer Science
Part II: gdb (Debugging under Unix)
/*reverse.c */
#include <stdio.h>
void reverse(char *before, char *after);
main()
{
char str[100]; /*Buffer to hold reversed string */
reverse("cat", str); /*Reverse the string "cat" */
printf("reverse(\"cat\")=%s\n", str); /*Display result */
reverse("noon", str); /*Reverse the string "noon" */
printf("reverse(\"noon\")=%s\n", str); /*Display result */
}
void reverse(char *before, char *after)
{
int i;
int j;
int len;
len=strlen(before);
for(j=len, i=0; j>=0; j--, i++)
after[i]=before[j];
after[len]=NULL;
}
The program after removing the errors is below:
#include <stdio.h>
void reverse(char *before, char *after);
void main()
{
char str[100]; /*Buffer to hold reversed string */
reverse("cat", str); /*Reverse the string "cat" */
printf("reverse(\"cat\")=%s\n", str); /*Display result */
reverse("noon", str); /*Reverse the string "noon" */
printf("reverse(\"noon\")=%s\n", str); /*Display result */
}
void reverse(char *before, char *after)
{
int i;
int j;
int len;
len=strlen(before);
for(j=len-1, i=0; j>=0; j--, i++)
after[i]=before[j];
after[len]=NULL;
}
The only change in the code is that 'j' variable inside for loop of reverse() is initialized to len-1 instead of len;
The debug console screen is as below: