Разделение строки на слова - C (СИ)
Формулировка задачи:
Как я знаю для разделения строки типа char* на слова по разделителю используется функция strtok,
тут в buf записывается первое слово из str,вопрос как получить второе слово ? И еще что происходит с исходной строкой после strtok ?
Приведите пример простейший для понимания.
Как можно разделить на слова строку типа string ?
buf=strtok(str," ");
Решение задачи: «Разделение строки на слова»
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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляются и инициализируются переменные:
size
- максимальная длина словаря, равна 10;amount
- строка, содержащая сумму прописью, равнаsto sorok tri milliona
;dictionary
- вектор, который будет содержать выделенные слова;j
- позиция в словаре;allow
- строка, в которую будут добавляться буквы для выделения слов;i
- позиция в строкеamount
;size_dict
- переменная для подсчета количества слов в словаре;
- Создается цикл, который будет разделять строку на слова:
- Внешний цикл
while
будет выполняться до тех пор, пока есть символы в строкеamount
; - Внутренний цикл
while
будет выделять каждое слово, проверяя, является ли текущий символ буквой; - Если текущий символ - не буква, то он пропускается, пока не будет найден следующий не буквенный символ;
- Если было выделено слово, то оно добавляется в словарь и счетчик
size_dict
увеличивается; - Если выделенное слово не может быть добавлено в словарь (так как он полон), то оно добавляется в конец;
- Внешний цикл
- Выполняется вывод выделенных слов (словаря) с помощью цикла
for
. Каждое слово выводится на новой строке; - Выводится количество слов в словаре;
- Функция
main
возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д