Like this. I can change the line by words, as well as the entire line. Just review the code and see if the logic helps.
#include <stdio.h> #include <string.h> void stringrev(char *); void reverseWords(char *); void reverseString(char* , int); int main() { char string[] = "reverse a string word by word"; reverseWords(string); printf("\nWord-Wise Reversed String : %s\n",string); stringrev(string); return 0; } void reverseWords(char * str) { int i = 0, j = 0; reverseString( str, strlen(str) ); while( 1 ) // Loop forever { if( *(str+j) == ' ' || *(str+j) == '\0') // Found a word or reached the end of sentence { reverseString( str+i, ji ); i = j+1; } if( *(str+j) == '\0') { break; } j++; } } void reverseString(char* str, int len) { int i, j; char temp; i=j=temp=0; j=len-1; for (i=0; i<j; i++, j--) { temp=str[i]; str[i]=str[j]; str[j]=temp; } } void stringrev(char *str) { int i=-1,j=0; char rev[50]; while(str[i++]!='\0'); while(i>=0) rev[j++] = str[i--]; rev[j]='\0'; printf("\nComplete reverse of the string is : %s\n",rev); }
source share