Czy da się pobrać nazwę pliku tymczasowego utworzonego za pomocą:
plik = tmpfile();
?
Chcę zapisać plik tymczasowy a następnie otworzyć go poleceniem z systemu (system()).
Tylko nie mów, że szukałeś i nie znalazłeś.
http://stackoverflow.com/questions/29647/how-do-you-get-the-filename-of-a-tempfile-to-use-in-linux
Ok, nie wiedziałem, że mkstemp() zminia wzór na nazwę utworzonego pliku.
Przy kompilacji:
...
char tname[]="/tmp/plik.XXXXXX";
tmp=mkstemp(tname);
...
wywala mi uwagę:
warning: assignment makes pointer from integer without a cast [enabled by default]
Jeżeli dobrze rozumiem to chodzi o to, że dla mkstemp ma być dany wskaźnik a ja dałem mu integer. tname nie jest wskaźnikiem?
Zauważ, że nadal nie znasz nazwy pliku. Powinieneś użyć funkcji tmpnam
.
Poprzednie pytanie dotycznące uwagi komplatora nieaktualne - źle zrozumiałem błąd.
W podręczku tmpname() jest napisany "Never use this function", wiele osób pisze żeby nie używać, kompilator wywala uwagę, że jej użycie jest niebezpieczne i lepiej użyć mkstemp.
mkstemp wpisuje do podanej mu tablicy nazwę utworzonego pliku.
Upon successful completion, mkstemp() shall return an open file descriptor. Otherwise, -1 shall be returned if no suitable file could be created.
I jest jeszcze taki problem, że istnieje tylko pod Linuksem.
PS. Sorry. Faktycznie funkcja modyfikuje parametr template
.