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(&current_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)

Другие вопросы по тегам