fopen със stdin като параметър за име на файл

Бях помолен да напиша програма, която основно анализира предоставения й файл, с пренасочване на stdin, като това:
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 - можете да използвате всички функции за четене на поток със stdin. - person ; 26.04.2011

Не трябва да отваряте нищо, тъй като stdin е вече пренасочен, следователно можете просто да използвате този манипулатор на stdin със стандартни файлови функции, т.е.:

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

използвайте freeopen.

From Unix man page:

#include < stdio.h >

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

person Arunmu    schedule 26.04.2011