Разделение строки на слова - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как я знаю для разделения строки типа char* на слова по разделителю используется функция strtok,
buf=strtok(str," ");
тут в buf записывается первое слово из str,вопрос как получить второе слово ? И еще что происходит с исходной строкой после strtok ? Приведите пример простейший для понимания. Как можно разделить на слова строку типа string ?

Решение задачи: «Разделение строки на слова»

textual
Листинг программы
#include <iostream>
#include <conio.h>
#include <vector>
 
using namespace std;
 
 
int main()
{
 
    int size=10; //максимальная длина словаря
    string amount="sto sorok tri milliona   "; //сумма прописью
    vector<string> dictionary(size); //создать словарь
    int j=0; //позиция в словаре
 
    string allow; //переменная, для выделения слов из прописи
    int i=0; //позиция в прописи
    int size_dict=0; //количество слов в словаре
 
 
    //создание и подсчет слов в словаре
    while( i<amount.size() ){ //пока есть символы в прописи
        while( isalpha(amount[i]) ){
            allow+=amount[i];
            ++i;
        }
         while( !isalpha(amount[i]) )
            ++i;
        if( i<=amount.size() ){
            ++size_dict;
            dictionary[j]=allow;
            allow.clear();
            ++j;
        }
        if (i>=amount.size()){
            dictionary[j]=allow;
            ++size_dict;
        }
    }
 
 
    //вывод выделенных слов(словаря)
    for (int i=0; i<dictionary.size(); ++i)
     cout<<dictionary[i]<<" "<<endl;
 
    cout<<" "<<size_dict;
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Объявляются и инициализируются переменные:
    • size - максимальная длина словаря, равна 10;
    • amount - строка, содержащая сумму прописью, равна sto sorok tri milliona;
    • dictionary - вектор, который будет содержать выделенные слова;
    • j - позиция в словаре;
    • allow - строка, в которую будут добавляться буквы для выделения слов;
    • i - позиция в строке amount;
    • size_dict - переменная для подсчета количества слов в словаре;
  3. Создается цикл, который будет разделять строку на слова:
    • Внешний цикл while будет выполняться до тех пор, пока есть символы в строке amount;
    • Внутренний цикл while будет выделять каждое слово, проверяя, является ли текущий символ буквой;
    • Если текущий символ - не буква, то он пропускается, пока не будет найден следующий не буквенный символ;
    • Если было выделено слово, то оно добавляется в словарь и счетчик size_dict увеличивается;
    • Если выделенное слово не может быть добавлено в словарь (так как он полон), то оно добавляется в конец;
  4. Выполняется вывод выделенных слов (словаря) с помощью цикла for. Каждое слово выводится на новой строке;
  5. Выводится количество слов в словаре;
  6. Функция main возвращает 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы