Рубрики

Ввод / вывод из внешнего файла в C / C ++, Java и Python для конкурентного программирования

В конкурентном программировании большую часть времени нам нужно вводить данные для проверки нашего кода вручную. Но это станет громоздким, если у нас возникнут такие вопросы, как графики, строки или громоздкий ввод входных данных, потому что это определенно истечет время ожидания или увеличится вероятность ввода неверных данных.

Мы можем легко избавиться от проблемы, просто сохранив контрольные примеры в указанном файле в нужном месте в соответствии с нашей простотой. Они полезны в таких соревнованиях, как Facebook Hackercup , Google Codejam . Эти соревнования не обеспечивают онлайновую среду, подобную судье, вместо того, чтобы просить вас загрузить входные и выходные файлы.

Для ввода / вывода мы в основном используем эти два типа режимов доступа к файлу, т.е.

  • «R»: означает чтение, поскольку открывает файл для операции ввода, но файл должен существовать в указанном месте.
  • «W»: означает запись, поскольку создает пустой файл для операций вывода. Если файл с таким именем уже существует, его содержимое отбрасывается, и файл обрабатывается как новый пустой файл.

C / C ++

В C / C ++ мы можем использовать freopen для стандартного ввода и вывода. Синтаксис этой функции как:

FILE * freopen(const char * filename, const char * mode, FILE * stream );
  • имя файла: это относится к имени файла, который мы хотим открыть.
  • Режим: обсуждено выше.
  • stream: указатель на объект FILE, который идентифицирует поток, который будет открыт повторно.

Мы также можем использовать символическую константу ONLINE_JUDGE для отладки. Поскольку большинство онлайн-судей добавляют этот флаг в конце командной строки перед выполнением нашего кода. Например, в C ++ 11 он будет скомпилирован как

-std = c++0x -O2 -static -s -lm -DONLINE_JUDGE

Таким образом, мы можем воспользоваться этим, используя директиву препроцессора Си .

// Ниже приведен код C / C ++ для ввода / вывода
#include<stdio.h>

  

int main()

{
#ifndef ONLINE_JUDGE

  

    // Для получения ввода из файла input.txt

    freopen("input.txt", "r", stdin);

  

    // Печать вывода в файл output.txt

    freopen("output.txt", "w", stdout);

  
#endif

    return 0;

}

ДЖАВА

В Java мы можем использовать класс BufferedReader для быстрого класса Input и PrintWriter для форматированного представления в вывод вместе с классами FileReader и FileWriter.

  • FileReader (String filename): этот конструктор создает новый FileReader и дает парсеру команду прочитать файл из этого каталога. Файл должен существовать в указанном месте.
  • FileWriter (String fileName): этот конструктор создает объект FileWriter в указанное место.

// Java-программа для обработки ввода / вывода

import java.io.*;

class Main

{

    public static void main(String[] args) throws IOException

    {

        // BufferedReader Класс для быстрого ввода в буфер

        BufferedReader br = new BufferedReader(

                               new FileReader("input.txt"));

  

        // класс PrintWriter печатает отформатированные представления

        // объектов в поток вывода текста.

        PrintWriter pw=new PrintWriter(new

                BufferedWriter(new FileWriter("output.txt")));

  

        // Ваш код идет здесь

  

        pw.flush();

    }

}
// Спасибо Саурабху Кумару Праджапати за предоставление этого Java-кода

ПИТОН

В python мы сначала импортируем модуль sys (system), после чего мы будем использовать функцию open (), которая возвращает объект файла, который обычно используется с двумя аргументами: open (имя файла, режим).

  • Первый аргумент — это строка, содержащая имя файла.
  • Второй аргумент — это другая строка (режим), содержащая несколько символов, описывающих способ использования файла.

# Ниже приведен код Pythone для ввода / вывода

  

import sys

# Для получения ввода из файла input.txt

sys.stdin = open('input.txt', 'r'

  
# Печать вывода в файл output.txt

sys.stdout = open('output.txt', 'w')

Эта статья предоставлена Shubham Bansal . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Ввод / вывод из внешнего файла в C / C ++, Java и Python для конкурентного программирования

0.00 (0%) 0 votes