#include #include void reverse_string (char *instr) { int len, i; char temp; if (!instr) return; len = strlen (instr) - 1; for (i = 0; i < len/2; i++) { temp = instr[i]; instr[i] = instr[len - i]; instr[len - i] = temp; } } void reverse_words (char *instr) { int pos=0, start, end; char temp; if (!instr) return; while (instr[pos] != '\0') { for (start = pos; instr[pos] != ' ' && instr[pos] != '\0'; pos++); end = pos; for (pos = start; pos < ((end-start)/2)+start; pos++) { temp = instr[pos]; instr[pos] = instr[end-1-pos+start]; instr[end-1-pos+start] = temp; } if (instr[end] == '\0') break; pos = end + 1; } } int main() { char mystring[100]; strcpy (mystring, "Here is the string I would like to reverse."); printf ("%s\n", mystring); reverse_string (mystring); printf ("%s\n", mystring); reverse_string (mystring); printf ("%s\n", mystring); reverse_words (mystring); printf ("%s\n", mystring); reverse_words (mystring); printf ("%s\n", mystring); reverse_words (mystring); reverse_string (mystring); printf ("%s\n", mystring); return 0; } /* result: Here is the string I would like to reverse. .esrever ot ekil dluow I gnirts eht si ereH Here is the string I would like to reverse. ereH si eht gnirts I dluow ekil ot .esrever Here is the string I would like to reverse. reverse. to like would I string the is Here */