Advertisement
Misha_

Разделение строки на слова

Dec 14th, 2018
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. /*
  7. Задача: с клавиатуры вводится строка.
  8. Нужно разделить её на слова, подсчитать
  9. количество слов и вывести каждое новое слово
  10. на новой строке в кавычках
  11. */
  12.  
  13. // Строка s вводится с клавиатуры
  14. // Массив строк words будет содержать слова из строки s (каждое слово отдельно)
  15. // Строка div в параметрах фукнции содержит все возможные разделители между словами
  16. // Она задана по умолчанию, то есть её не обязательно вводить при вызове функции
  17. // Однако её можно ввести при вызове функции, тогда вместо значения по умолчанию будет то, что ты ввела
  18. // Функция делит строку s на слова и записывает их в массив строк words каждое в отдельную ячейку, возвращает число - количество слов
  19.  
  20. int split_pro_v2(char *s, char words[][256], const char *div = " _;,./") {
  21.     if (!s) return -1;
  22.     int c = 0;
  23.     char *w = nullptr;
  24.     do {
  25.         w = strtok(!c ? s : nullptr, dividers);
  26.         if (w)
  27.             strncpy(words[c++], w, strlen(w));
  28.     } while (w);
  29.     return c;
  30. }
  31.  
  32. // Размер s - максимальный размер строки, которая будет вводитсья с клавиатуры
  33. // Первый размер words - максимальное количество слов, второй размер words - максимальный размер слова
  34. // Переменная k содержит число - количество слов
  35.  
  36. int main() {
  37.     char s[256] = {};
  38.     char words[100][256] = {};
  39.     cin.getline(s, 255);
  40.     int k = split_pro(s, words);
  41.     for (int i = 0; i < k; ++i)
  42.         cout << "\"" << words[i] << "\"" << endl;
  43.     return 0;
  44. }
  45.  
  46. // Выводятся слова в ковычках
  47. // Чтобы слова выводились без ковычек следует написать cout << words[i] << endl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement