title: Split string in C every white space
body: <p>I want to write a program in C that displays each word of a whole sentence (taken as input) at a seperate line. This is what i have done so far:</p>
  
  <hr>
  
  <pre><code>void manipulate(char *buffer);
  int get_words(char *buffer);
  
  int main(){
      char buff[100];
  
      printf("sizeof %d\nstrlen %d\n", sizeof(buff), strlen(buff));   // Debugging reasons
  
      bzero(buff, sizeof(buff));
  
      printf("Give me the text:\n");
      fgets(buff, sizeof(buff), stdin);
  
      manipulate(buff);
      return 0;
  }
  
  int get_words(char *buffer){                                        // Function that gets the word count, by counting the spaces.
      int count;
      int wordcount = 0;
      char ch;
  
      for (count = 0; count &lt; strlen(buffer); count ++){
          ch = buffer[count];
          if((isblank(ch)) || (buffer[count] == '\0')){                   // if the character is blank, or null byte add 1 to the wordcounter
              wordcount += 1;
          }
      }
      printf("%d\n\n", wordcount);
      return wordcount;
  }
  
  void manipulate(char *buffer){
      int words = get_words(buffer);
      char *newbuff[words];
      char *ptr;
      int count = 0;
      int count2 = 0;
      char ch = '\n';
  
      ptr = buffer;
      bzero(newbuff, sizeof(newbuff));
  
      for (count = 0; count &lt; 100; count ++){
          ch = buffer[count];
          if (isblank(ch) || buffer[count] == '\0'){
              buffer[count] = '\0';
              if((newbuff[count2] = (char *)malloc(strlen(buffer))) == NULL) {
                  printf("MALLOC ERROR!\n");
                  exit(-1);
              }
              strcpy(newbuff[count2], ptr);
              printf("\n%s\n",newbuff[count2]);
              ptr = &amp;buffer[count + 1];
              count2 ++;
          }
      }
  }
  </code></pre>
  
  <hr>
  
  <p>Although the output is what i want, i have really many black spaces after the final word displayed, and the malloc() returns NULL so the MALLOC ERROR! is displayed in the end. 
  I can understand that there is a mistake at my malloc() implementation but i do not know what it is. </p>
  
  <p>Is there another more elegant - generally better way to do it?</p>
  
  <p>Thanks in advance.</p>