Переписать приведенную программу не используя strtok - C (СИ)
Формулировка задачи:
Помогите плз написать эту программу не используя strtok
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
int main(void)
{
char str[256], wrd[50];
int n = 0;
printf("Enter string: ");
gets(str);
printf("Enter word: ");
gets(wrd);
for(char *p = strtok(str, " "); p; p = strtok(NULL, " "))
if(strlen(p) == strlen(wrd))
++n;
printf("Word: ");
puts(wrd);
printf("Count reps: %d", n);
return 0;
}Решение задачи: «Переписать приведенную программу не используя strtok»
textual
Листинг программы
#include <iostream>
#include <string>
#include <sstream>
int main(){
std::string str, wrd;
int n = 0;
std::cout << "Enter string: ";
getline(std::cin, str);
std::cout << "Enter word: ";
std::cin >> wrd;
std::istringstream ist(str);
while( ist >> str )
if(str.length() == wrd.length()) ++n;
std::cout << "Word: ";
std::cout << wrd;
std::cout << " Count reps: " << n;
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream, string, sstream
- Объявление переменных:
- str (строка) - для хранения введенной строки
- wrd (строка) - для хранения слова, длина которого будет проверяться
- n (целое число) - для подсчета количества повторений слова
- Вывод сообщения с просьбой ввести строку
- Считывание строки с помощью функции getline
- Вывод сообщения с просьбой ввести слово
- Считывание слова с помощью функции cin
- Создание объекта istringstream из строки str
- Запуск цикла while, который будет выполняться до тех пор, пока объект istringstream не прекратит выдавать значения (то есть пока не закончится строка)
- Внутри цикла проверка длины текущего слова и увеличение счетчика n, если слова совпадают по длине
- Вывод слова, которое искали, и количество его повторений