C ben TXT-be valo irás, neirja felul a letezo fajlokat - valami otlet hogyan oldajam meg?
Raspberry Pi vel futtatok egy C programot, ami elmenti/kiírjaegy txtbe a homersekletet addig amíg ki nem lepek a programbol...
A kiiratas igy lett megoldva:
FILE *file = fopen("./outputs/temperature.txt", "w");
if (file == NULL){ exit(1); }
...
...
fprintf(file, "%f\n",bmp.b_alt);
fflush(file);
A baj ezzel az,hogy mindig felulirja az adatokat,ha ujbol elindul a program. Ezt hogyan lehetne megoldani,hogy keszitsen egy uj fajlt (más nevvel) ? // gondoltam arra,hogy mindig az aktualis ido alapjan letrehozna egy fajlt - ezt hogyan lehetne osszehozni?





Az fopen fájl első paramétere egy string.
Létrehozol egy stringet, ami az alapot tárolja (./outputs/), és ezt strcat-tal összefűzöd egy általad generált stringgel.
Ennek az eredményét adod meg a fopen-ben.





1. vagyok:
Másik (egyszerűbb) megoldás, w+ paraméterrel fopen-elsz, és akkor a végére írja, és nem felülírja. Csak akkor az olvasást is ahhoz kell igazítani, meg lehet hogy nem árt mellétárolni a dátumot is.





Még mindig 1. vagyok, és hülye :D
A w+ pont hogy felülírja, keress rá inkább az fopen paraméterekre, talán az "a" mód kell neked, de ezt már nem merem biztosra mondani :D
koszi mar vegre sikerulni latszik...itt a kod ha kene valakinek majd...sok feles dolog van benne, probalkozasok stb...
de vegulis az mukodes:
kell hogy legyen egy output subfolder a program ahol fut.
es itt mindig letrehoz egy ido szerinti mappat,majd ide menti majd a dolgokat(txt-t)
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <getopt.h>
#include <errno.h>
//cas
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
int i = 0;
int main(int argc, char **argv)
{
char filename[40];
// pre cas
clock_t start_t, end_t, total_t;
time_t start, end,mytime;
//pre vypis cas
time_t current_time;
struct tm * time_info;
char timeString[9]; //space for "HH:MM:SS\0"
double diff_t;
char s1[50],s2[40]= "test.txt";
start = time(NULL);
//get current time
time(¤t_time);
time_info = localtime(¤t_time);
strftime(timeString, sizeof(timeString), "%H:%M:%S",time_info);
// time = gmtime(&now);
//strftime(filename, sizeof(filename),
"output/SA_TEST_%Y-%m-%d_%H:%M:%S", time);
strftime(filename, sizeof(filename), "./output/%H-%M-%S/", time_info);
mkdir(filename, 0777);
// strftime(filename, sizeof(filename),
"./output/log/SA_TEST_%Y.txt", time_info);
//FILE *file = fopen("output/testcas.txt", "w");
printf("filename %s\n", filename );
strcat(filename,s2);
FILE *file = fopen(filename, "w");
printf("filename %s\n", filename );
printf("s1 %s\n", s2 );
//FILE *file = fopen(filename, "w");
if (file == NULL){ exit(1); }
// fprintf(file, "%s \n",timeString);
fprintf(file, "%d \n",10);
fflush(file);
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!