|
|
Otvorenie súboru
|
1.7.2009 09:58
jojo
|
zdravým. celé dva dni hladám riešenie pre tento problém.
otváram súbor pre zápis v binárnej podobe. pokial napíšem fsave = fopen("nazov suboru", "wb");
tak funguje. lae akonahle chcem spraviť export double mask_save(double id,char fname)
{
FILE *fsave;
MASK * ukMask = zoznam_mask[(int)id];
int h = ukMask->get_height();
long buff_size=h+4;
char buffer[buff_size];
fsave = fopen(fname, "wb");
setbuf(fsave,buffer);
if (!fsave) {fclose(fsave); return (-1);}
fwrite(h,2,1,fsave);
....
} tak mi kompilator devc++ vzhodí hlášku že nemôže zmeniť dátový typ . akože mi je jasne prečo. ale ako to inač spraviť ?
ked som skušal napísať názov priamo fopen("nazov suboru", "wb"); tak mi zase vyhodilo tu hlášku pri fwrite(w,2,1,fsave); |
|
|
Re: Otvorenie súboru
|
1.7.2009 14:03
Aleš Hakl
|
jednak, jmeno souboru je retezec (char*), ne znak(char), tudiz vam to logicky nefunguje.
problem u toho fwrite je principialne uplne stejny, protoze ten int h co se tam snazite zapsat opravdu nedava smysl. Prvni argument fwrite je ukazatel na pole jakychsi struktur, ktere chcete zapsat, takze pokud tam vazne chcete zapsat to h, tak fwrite(&h, sizeof(int), 1, fsave). Pricemz je mozna vhodne si uvedomit, ze vam nikdo negarantuje, ze byte toho intu budou mit vzdy stejny vyznam (napr. budou v pameti ve stejnem poradi) a dokonce ani, ze vzdy budou 4.
Takova poznamka navic je, ze pokud mate problemy tohoto typu, tak opravdu k nicemu nepotrebujete pouzivat setbuf(3) (popravde receno, najit problem, ktery by to mohlo resit a opravdu jej to resi je docela umeni). |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|