fork download
  1. //(c)Terminator
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5. #include <ctype.h>
  6.  
  7.  
  8. //подсчёт кол-во слов в строке
  9. size_t count_words(const char* s){
  10. const char* p;
  11. size_t n = 0;
  12.  
  13. while(*s){
  14. while(*s && ! isalpha(*s))
  15. ++s;
  16. for(p = s; isalpha(*p); ++p);
  17. if((p - s) > 0)
  18. ++n;
  19. s = p;
  20. }
  21. return n;
  22. }
  23.  
  24.  
  25.  
  26. int main(void){
  27. size_t i, num;
  28. char** arr, *p;
  29. char s[] = "Mercury Venus Earth Mars Jupiter Saturn Neptun Uran ";
  30.  
  31. num = count_words(s);
  32. arr = (char**)malloc(num * sizeof(char*));
  33. if(arr == NULL)
  34. return 1;
  35.  
  36. //разделить слова из строки в массив
  37. i = 0;
  38. for(p = strtok(s, " "); p != NULL; p = strtok(NULL, " ")){
  39. arr[i] = (char*)malloc((strlen(p) + 1) * sizeof(char));
  40. if(arr[i] != NULL)
  41. strcpy(arr[i], p);
  42. ++i;
  43. }
  44.  
  45. //вывести слова
  46. for(i = 0; i < num; ++i)
  47. puts(arr[i]);
  48.  
  49. // в конце удалить
  50. for(i = 0; i < num; ++i){
  51. if(arr[i] != NULL)
  52. free(arr[i]);
  53. }
  54. free(arr);
  55. return 0;
  56. }
Success #stdin #stdout 0s 2380KB
stdin
Standard input is empty
stdout
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Neptun
Uran