Чтение случайной строки из txt файла - C (СИ)
Формулировка задачи:
Здравствуйте. Подскажите пожалуйста, как можно проще реализовать чтение и вывод на экран случайной строки из текстового файла?
Решение задачи: «Чтение случайной строки из txt файла»
textual
Листинг программы
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
char buffer[1024], line[1024] = { 0 };
unsigned i = 0;
while (fgets(buffer, sizeof buffer, stdin) != NULL)
if (rand() % ++i == 0)
strcpy(line, buffer);
printf("%s", line);
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две строки:
bufferиline. - Инициализируется переменная
iдля контроля цикла. - Происходит чтение из стандартного ввода (
stdin) вbufferс помощью функцииfgets. - С помощью оператора
%проверяется, является ли текущая итерация случайной (с вероятностью 1/i). - Если условие выполняется, то содержимое
bufferкопируется вline. - Наконец, содержимое
lineвыводится на стандартный вывод (stdout) с помощью функцииprintf.