открыть с stdin в качестве параметра имени файла - PullRequest
4 голосов
/ 26 апреля 2011

Меня попросили написать программу, которая в основном анализирует данный файл, с перенаправлением stdin, например:
myProg param1 param2 param3

Я пытаюсь использовать fopenфункция для того, чтобы открыть данный файл, но я не понимаю, что я должен дать ему в аргументе 'const char * filename'.

Ответы [ 3 ]

10 голосов
/ 26 апреля 2011

Вам не нужно открывать файл. Ваша программа имеет специальное значение, называемое stdin, которое содержит дескриптор стандартного потока ввода процесса. Вы можете использовать это так же, как дескриптор файла, например:

int c = fgetc( stdin );

или

fread( somebuffer, somesize, 1, stdin );
1 голос
/ 26 апреля 2011

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

while (fread(buf, 1, 1024, stdin) != 0) { // Read the data from input
  // Do something with data stored in buffer
}
0 голосов
/ 26 апреля 2011

используйте freopen.

Со страницы руководства Unix:

#include &lt stdio.h &gt

     FILE *freopen(const char *filename, const char  *mode,  FILE
     *stream);
...