fork download
  1. #include <stdio.h>
  2.  
  3. #define MAX_LENGTH 100
  4.  
  5. int is_blank( char c )
  6. {
  7. return c == ' ' || c == '\t';
  8. }
  9. /*
  10. char * capitalize( char *s )
  11. {
  12. if ( *s )
  13. {
  14. int blank = is_blank( *s );
  15.  
  16. if ( !blank )
  17. {
  18. *s -= 'a' - 'A';
  19. }
  20.  
  21. capitalize( s + 1 );
  22.  
  23. if ( !blank && !is_blank( *( s + 1 ) ) && *( s + 1 ) )
  24. {
  25. *( s + 1 ) += 'a' - 'A';
  26. }
  27. }
  28.  
  29. return s;
  30. }
  31. */
  32.  
  33. char * capitalize( char *s )
  34. {
  35. static size_t i = 0;
  36.  
  37. if ( *( s + i ) )
  38. {
  39. if ( i == 0 || is_blank( s[i-1] ) )
  40. {
  41. s[i] -= 'a' - 'A';
  42. }
  43.  
  44. ++i;
  45.  
  46. capitalize( s );
  47.  
  48. --i;
  49. }
  50.  
  51. return s;
  52. }
  53.  
  54. size_t read_line( char *s, size_t n )
  55. {
  56. int ch;
  57. size_t i = 0;
  58.  
  59. while ( i + 1 < n && ( ch = getchar() ) != EOF && ch != '\n' )
  60. {
  61. s[i++] = ch;
  62. }
  63.  
  64. s[i] = '\0';
  65.  
  66. return i;
  67. }
  68.  
  69. int main(void)
  70. {
  71. char s[MAX_LENGTH];
  72.  
  73. read_line( s, MAX_LENGTH );
  74.  
  75. puts( s );
  76.  
  77. puts( capitalize( s ) );
  78.  
  79. return 0;
  80. }
  81.  
Success #stdin #stdout 0s 4508KB
stdin
hello everybody. how do you do?
stdout
hello everybody. how do you do?
Hello Everybody. How Do You Do?