C создать текстовый файл и добавить текущую дату и время в качестве имени
Мне не удалось найти, как я могу создать текстовый файл в C, например "test.txt", а затем добавить к имени файла текущие дату и время? Каждый раз, когда программа запускается, она создает test.txt, но с другой датой и временем? этот. Сейчас я создаю текстовый файл, просто используя функцию открытия с флагами, но я не уверен, как добавить дату и время?
fd = open("test.txt", O_RDWR | O_CREAT | O_APPEND, 0777);
Спасибо
3 ответа
Я не уверен в том, что делает ваш код, поэтому вот самая базовая реализация для вашей проблемы. Я думаю, что это может помочь вам.
Есть более изящные способы ее решения, но я думаю, что вы должны начать снизу и идти вверх
FILE *fp;
// insert the date into the char array
char text[17];
time_t now = time(NULL);
struct tm *t = localtime(&now);
strftime(text, sizeof(text)-1, "%dd %mm %YYYY %HH:%MM", t);
text[16] = 0;
// concat the date to file name
char *filename;
if((filename = malloc(strlen("C:\\Temp\\filename.txt")+strlen(text)+1)) != NULL){
filename[0] = '\0'; // ensures the memory is an empty string
strcat(filename,"C:\\Temp\\filename");
strcat(filename,text);
strcat(filename,".txt");
}
// use the file
fp = fopen(filename, "w+");
fputs("This is testing for fputs...\n", fp);
fclose(fp);
Надеюсь, поможет
Используя предопределенную функцию ctime:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
time_t current_time;
FILE* file;
current_time = time(NULL);
file = fopen("test.txt", "w+");
fprintf(file, "%s", ctime(¤t_time));
return 0;
}
Использование функции strftime:
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm* timeinfo;
char buffer[80];
FILE* file;
file = fopen("test.txt", "w+");
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, 80, "%I:%M:%S", timeinfo);
fprintf(file, "%s", buffer);
return 0;
}
Вы можете использовать библиотечные функции ctime.h
time_t time(time_t *) возвращает вам текущее время.
Чтобы преобразовать его в форматированную строку времени, рассмотрите использование struct tm * gmtime(time_t *).
Затем используйте int sprintf(char *, const char * ...) для форматирования строки имени файла.
Потратьте некоторое время на чтение этих документов библиотеки:
время ( http://www.cplusplus.com/reference/ctime/time/)
gmtime ( http://www.cplusplus.com/reference/ctime/gmtime/)
sprintf ( http://www.cplusplus.com/reference/cstdio/sprintf/?kw=sprintf)