Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2018, 15:45   #1
Raticate
Новичок
Джуниор
 
Регистрация: 30.09.2018
Сообщений: 1
По умолчанию (Язык С) Как считать массив строк из стандартного ввода, если нет никакого сигнала об окончании ввода

На данный момент обучаюсь языку С. Мне необходимо решить следующую задачу:
Задача об отображении темы письма
Time limit: 14 s
Memory limit: 64 M
Чтобы показать информацию о пришедшем письме, нужно сначала её найти.
Для этого в файле письма необходимо найти специальные заголовки.

Составить программу построчной фильтрации текста.
Суть фильтра — отбор строк, начинающихся с одного из следующих выражений: «Date:», «From:»,«To:», «Subject:».
Текстовые строки подаются на стандартный ввод программы, результат программы должен подаваться на стандартный вывод.

Процедура фильтрации должна быть оформлена в виде отдельной функции, которой подается на вход массив строк, выделенных в динамической памяти и его длина.
На выходе функция возвращает указатель на NULL-терминированный массив с найденными строками (последним элементом массива добавлен NULL для обозначения, что данных больше нет).

Программа должна уметь обрабатывать возникающие ошибки (например, ошибки выделения памяти). В случае возникновения ошибки нужно вывести в поток стандартного вывода сообщение "[error]" и завершить выполнение программы.

ВАЖНО! Программа в любом случае должна возвращать 0. Не пишите return -1, exit(1) и т.п. Даже если обнаружилась какая-то ошибка, все равно необходимо вернуть 0! (и напечатать [error] в stdout).

Examples
Input:
From: admin
Subject: hi
Sender: admin
Output:
From: admin
Subject: hi

Как работает сама функция фильтра мне более менее понятно. Но как считать исходный массив строк? Никакой информации о флаге окончания ввода нет
Raticate вне форума Ответить с цитированием
Старый 01.10.2018, 09:44   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Считывайте
while(!feof(stdin))
{
}
подавать на ввод текстовый файл со строками при помощи перенаправления потоков.
https://ru.wikipedia.org/wiki/%D0%9F...BE%D0%B4%D0%B0
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать символ char из клавиатурного ввода? RusRatibor Помощь студентам 1 13.11.2017 12:07
Баг стандартного ввода? Или как мой бесстыжий код приводит к синему экрану смерти _Bers Общие вопросы C/C++ 11 02.01.2012 16:34
Потоки. Использование стандартного ввода–вывода. Lazy_Bitch Общие вопросы C/C++ 1 05.05.2010 12:15
Перенаправление стандартного ввода/вывода в файл Роман Радер Общие вопросы C/C++ 1 09.01.2010 18:34
Как сделать запрет ввода букв в поле для ввода input zvezda_t PHP 1 27.12.2009 22:02