Вопрос о K & R - перенаправление ввода - PullRequest
1 голос
/ 10 июля 2011

В разделе 1.6 «Языка программирования C» (K & R) приведен пример программы, и авторы утверждают:

The output of this program ON ITSELF is
    digits = 9 3 0 0 0 0 0 0 0 1, white space = 123, other = 345

Затем есть много похожих программ и т. Д., Включая упражнения.Я все понимаю в логике кода и могу выполнять упражнения, но как мне на самом деле протестировать мою программу на файле, подобном авторам или многим другим в Интернете?

Редактировать: Вопрос должен быть: Какя могу перенаправить ввод файла в программу?

Ответы [ 3 ]

4 голосов
/ 10 июля 2011

Программа в главе 1.6 читает ввод из стандартного ввода. Чтобы сделать его читаемым из файла, вы можете (в большинстве операционных систем) перенаправить stdin в файл, запустив вашу программу следующим образом:

myprogram < somefile

Или вы можете передать содержимое файла следующим образом:

cat somefile | myprogram

В Windows вы бы использовали программу type вместо cat,

type somefile | myprogram
2 голосов
/ 10 июля 2011

По умолчанию ваша программа будет принимать ввод из stdin, который является буфером, который заполняется на основе ввода с клавиатуры (по умолчанию). Тем не менее, вы также можете указать своей программе заполнить стандартный ввод из текстового файла.

Используя * nix систему , вы можете просто создать текстовый файл и сохранить его как угодно, например, test_input. Заполните его вводом, который вы хотите передать в свою программу, сохраните его, а затем запустите программу следующим образом:

./a.out < test_input

Это называется перенаправлением, потому что вы «перенаправляете» (если хотите) ввод из файла, а не по умолчанию (клавиатура). Это происходит в обоих направлениях, вы также можете перенаправить вывод в файл, а не в стандартный вывод с другой угловой скобкой '>'.

Используя Visual Studio и не открывая командную строку, чтобы выполнить что-то похожее на команду выше, вы можете использовать C ++ ifstream, поместить текстовый файл в локальный каталог, а затем просто использовать ifstream везде вместо стандартного ввода:

ifstream sin("test_input.txt" , ifstream::in);
int value;
sin >> value;

Вы можете вывести в файл с помощью ofstream.

Обратите внимание, что ifstreams и ofstreams являются объектами C ++ и не могут использоваться в C. Хотя вы можете писать в файлы и читать из файлов в C, это немного сложнее, чем просто заменить все экземпляры cout и cin. Вы на самом деле должны думать о том, что вы читаете и пишете:)

2 голосов
/ 10 июля 2011

Используется перенаправление. Вместо ввода в программу с клавиатуры она поступает из файла.

В командной строке DOS: -

C:> myexe <имя файла </p>

Чтобы получить приглашение DOS в Windows, используйте командную оболочку. Или запустите Run .. и введите cmd

На Mac это называется терминалом (введите «терминал» в Searchlight, чтобы добраться до него).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...