fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. int iswhite(int c)
  7. {
  8. return !c || isspace(c) || ispunct(c);
  9. }
  10.  
  11. void swap(char* a, char * b)
  12. {
  13. char t = *a;
  14. *a = *b;
  15. *b = t;
  16. }
  17.  
  18. void reverseWord(char * b, char * e)
  19. {
  20. while(b < e)
  21. {
  22. swap(b++,e--);
  23. }
  24. }
  25.  
  26. char * reverse(char * s)
  27. {
  28. reverseWord(s,s+strlen(s)-1);
  29. for(char* c = s; *c; ++c)
  30. {
  31. if (iswhite(*c)) continue;
  32. char * b = c;
  33. while(!iswhite(*c)) ++c;
  34. reverseWord(b,c-1);
  35. }
  36. return s;
  37. }
  38.  
  39. char s[] = "Привет, это длинное предложение!";
  40.  
  41. int main(int argc, const char * argv[])
  42. {
  43. puts(reverse(s));
  44. }
  45.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
!предложение длинное это ,Привет