C-ben miert írja felul a txt fajlt, csak az utolso kiiras marad meg?
void print_fused_euler_angles(mpudata_t *mpu)
{
FILE *f = fopen("file.txt", "w");
if (f == NULL)
{
printf("Error opening file!\n");
exit(1);
}
printf("\rX: %0.0f Y: %0.0f Z: %0.0f ",
mpu->fusedEuler[VEC3_X] * RAD_TO_DEGREE,
mpu->fusedEuler[VEC3_Y] * RAD_TO_DEGREE,
mpu->fusedEuler[VEC3_Z] * RAD_TO_DEGREE);
//*******kiiratas********
fprintf(f, "print : %f\n", mpu->fusedEuler[VEC3_X] * RAD_TO_DEGREE);
fflush(stdout);
//fclose(f);
}
Ebben a funcioban iratom ki egy txt-be a szenzor mért értékeit, de csak az utolso marad meg a txt ben mielot kilepek a programbol.
Egy egyszerű megoldás, ha a függvényed kapja a file handlet (FILE*), és nem magának csinálja meg.
Így a függvényen kívül eldöntheted, milyen módban nyitod meg, közben ráhívhatsz akárhányszor a fprintf-re, aztán bezárod és a program következő indulásakor kezded újra.
(finomíthatod még, pl. fájlnevet megadod parancssori argumentumként, így megmaradhat az előző is, ha úgy akarod)
Aha :) erre gondoltamen is...csak nem talaltam peldat erre idaig, hogy hogyan adjam meg parameternek
errol a kodrol beszelek:
ezen belul a gyokerben van a imu.c
példa:
Nyilván mindenféle függvényt lehetne még írni, mert így egy "vector3d_t" streamre íratásának a logikája benne van egy függvényben, aminek ehhez semmi köze (print_fused_euler_angles_to_file), de ez C, lowlevel, stb.. megfér..
Kis magyarázat: az stdout is egy file pointer, szóval elég generikus az egész (pl. a printf az egy fprintf az stdoutra)
Kicsit összekevertem c++-al. Nincs default paraméter tehát a függvény szignatúráját kell változtatni:
void print_fused_euler_angles_to_file(mpudata_t *mpu, FILE* file)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!