fopen со стандартным вводом в качестве параметра имени файла

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

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


person Zach    schedule 26.04.2011    source источник


Ответы (3)


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

int c = fgetc( stdin );

or:

fread( somebuffer, somesize, 1, stdin );
person Community    schedule 26.04.2011
comment
@Molly Так что используйте fread - вы можете использовать все функции потокового чтения со стандартным вводом. - person ; 26.04.2011

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

while (fread(buf, 1, 1024, stdin) != 0) { // Read the data from input
  // Do something with data stored in buffer
}
person SPIRiT_1984    schedule 26.04.2011

используйте фриопен.

From Unix man page:

#include < stdio.h >

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

person Arunmu    schedule 26.04.2011