diff --git a/lab04/lab04-C.cpp b/lab04/lab04-C.cpp new file mode 100644 index 0000000..453a1e2 --- /dev/null +++ b/lab04/lab04-C.cpp @@ -0,0 +1,35 @@ +#include // Для fgets() +#include // Для strspn() и strcspn() +#include + +using namespace std; + +int main() { + const size_t MAX_SIZE = 256; // Максимальный размер строки + char text[MAX_SIZE]; // Массив для ввода строки + const char* separators = " \r\n,.!?:;()-"; // Разделители слов + + // Ввод строки с консоли + cout << "Enter a string: "; + fgets(text, MAX_SIZE, stdin); + + const char* start = text; // Указатель на начало строки + + // Цикл для обработки строки + while (true) { + const size_t separator_count = strspn(start, separators); // Кол-во разделителей в начале + start += separator_count; // Пропуск разделителей + + if (start[0] == '\0') { // Если достигнут конец строки, завершить + break; + } + + const size_t word_length = strcspn(start, separators); // Длина следующего слова + cout.write(start, word_length); // Печать слова + cout << '\n'; // Перевод строки + + start += word_length; // Переместить указатель на следующий блок + } + + return 0; +}