А>int handle = _fileno(f);
А>А как наоборот получить FILE * по int хэндлу ?
А>Он мне нужен для fread и fwrite.
А зачем? Вы в курсе, что
1) Хэндл, который возвращает _fileno валиден до тех пор пока не будет вызван fclose для f. Так что код типа
FILE *f1 = fopen(...)
int h = _fileno(f1);
FILE *f2 = fdopen(h,...)
fclose(f1)
fprintf(f2)... //БАМЦ, хэндл используемый f2 уже невалиден ибо fclose(f1) его закрыл.
fclose(f2)...//БАМЦ, ибо см выше.
2) По умолчанию вывод в FILE * буферизуется. Буфер ассоциируется с конкретной FILE структурой. Если вы ассоциируете две FILE структуры с одним и тем же низкоуровевым хэндлом (с помощью дважды предложенных fdopen(_fileno(f)) вы по сути получите две различных буфера — каждый у своей FILE *, так что две последовательные записи в разные структуры FILE ассоциированные с одним и тем же файловым дескриптором могут оказаться записаны в совершенно не том порядке, в каком вы вызывали функции записи (к примеру fprintf)
Так что лучше расскажите что вам на самом деле надо.