Šta je novo?

fprintf problem

cheda13

Čuven
Učlanjen(a)
17.12.2001
Poruke
92
Poena
609
U pitanju je export plugin za max4 (exportuje keyframe informacije za biped). Ovo je zavrsni loop i treba da ispise vreme i matrix u file za svaki node i svaki keyframe.
Problem je sto iz cista mira, na nekom od poslednjih node-ova u sred matrixa prekine da ispisuje i tu stavi kraj file-a. Kada isto ovo pretvorim u string (sprintf) i prikazem u MessageBox -u sve radi normalno do kraja. Nemam ideju u cemu je problem. Hvala ako neko zna o cemu se radi.

ovo je code:
[code:1]
for(int i=0; i<times.Count(); i++)
{
Matrix3 m;

m = node->GetNodeTM(times, NULL);
float t = (float)times/4800;
fprintf(fp, "\n%f\n%f %f %f\n%f %f %f\n%f %f %f",t,
m.m[0][0],m.m[1][0],m.m[2][0],
m.m[0][1],m.m[1][1],m.m[2][1],
m.m[0][2],m.m[1][2],m.m[2][2]);
}
[/code:1]

a ovo je kraj tog file-a:

[code:1]
1.133333 // -vreme
-0.915903 -0.401393 -0.002423 //MAtrix
-0.401399 0.915900 0.002634 /// 3x3
0.003385 -0.999994 -32.960289 ///
1.333333 //-vreme
-0.998557 // ovde bi trebao sledeci matrix ali toliko od toga...
[/code:1]

hvala
happyface🙂
 
Ako ti sprintf radi kako treba, onda je problem sa tim fajlom. Nisi uopste naveo kako si otvorio fajl, u kom modu, (imas li dovoljno mesta na tom disku 😀), itd. Ono:

[code:1]
int main()
{
FILE *MyFile;
...
MyFile = fopen("dump.dat", "w+");
...
fprintf(MyFile, ...);
...
}
[/code:1]

Dalje, koristi standardne debugging tehnike -> ne znam koji cpp koristis, posto tu sad sintaksa osciluje, ali uglavi upis u fajl u try...except blok ili drugu vrstu provere (prilagodjenu vendoru kojeg koristis); ukoliko se ne varam, u slucaju greske prilikom rada sa fprintf se vraca EOF kao rezultat.

Osim toga, razmisli o sledecem -> ionako za upis koristis formu podataka koja ima neku poznatu sekvencu. Uzmi lepo pa formiraj strukturu, sa lepo formatiranim elementima i onda snimaj takvu strukturu u fajl. Onda nemas ni untyped format fajla, sto olaksava neke stvari. Itd.
 
will try...
 
File je otvoren bas kako si napisao, fprintf mi ne vrati ni u jednom trenutku EOF. Jos nesto kako znam da nije nesto u redu sa file-om: kada ga exportujem, udjem u windows commander da vidim file i onda pise size of file =0 ali kada ga otvori sve je u redu, osim sto fali kraj.

Nisam te bas razumeo sta si hteo da kazes sa onim da formiram strukturu pa onda da ispisem. (podaci su vec u strukturi koja mi odgovara)

hvala
happyface🙂
 
Ono sto si ti napisao, chedo, sve lepo radi, pod uslovom da si ispostovao ono sto rece silver:
...
FILE *fajl;
...
fajl=fopen("nesto.txt","w+");
....
fprintf(fajl,"...",t,m.....);
....
fclose(fajl);

Dobija se OK text fajl i sve funkcionise. Ako i dalje imas problem, to moze da bude da nisi dobro zatvorio fajl ili da pri otvaranju nesto nije kako bi trebalo (flags ili tako nesto). Mozda problem uopste nije do fprintf, mozda je problem u objektu *node. Probaj sa trace i watch pa vidi gde je problem...
 
Ja znam da je sve sto sam napisao savrseno u redu i da bi trebalo da radi. A sto se tiche node-ova sve lepo ispisuje u string kada debugujem samo iz cista mira stane u file-u. Ono sto me je najvise bunilo je sto staje bez nekakvog reda, nekad ovde, nekad onde. Uglavnom sredio sam nekako (koristeci dobri stari fwrite u binarnom formatu)

hvala vam obojici na svesrdnoj pomoci
happyface🙂
 
Nazad
Vrh Dno