C - поставить текущую дату в имени файла - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть 4 значения: A,B,C,D. После выполнения набора вычислений с этими значениями я хочу, чтобы мой код выводил результаты в файл вида ABCD_MM.DD.YY.txt, чтобы отслеживать, когда это было сделано.

Я не совсем уверен, как лучше всего сделать это в C. У меня есть «рабочая» версия, использующая itoa(), которая не является стандартной функцией C и останется (и ушла) нераспознанной на машинах. кроме моего при компиляции.

Это код, который у меня есть для этого, может ли кто-нибудь помочь лучше (и общепринятым) способом? Массив char name был определен с глобальной областью действия.

void setFileName(){  

    time_t now;

    struct tm *today;  
    char date[9];

    //get current date  
    time(&now);  
    today = localtime(&now);

    //print it in DD.MM.YY format.
    strftime(date, 15, "%d.%m.%Y", today);

    char buff[20];
    char vars[20];

    //put together a string of the form:
    //"ABCD_DD.MM.YY.txt"
    strcpy(vars, itoa(A, buff, 20));
    strcat(vars, itoa(B, buff, 20));
    strcat(vars, itoa(C, buff, 20));
    strcat(vars, itoa(D, buff, 20));

    strcpy(name, vars);
    strcat(name, "_");
    strcat(name, date);
    strcat(name, ".txt");
}

1 Ответ

6 голосов
/ 28 февраля 2011
char filename [ FILENAME_MAX ];
snprintf(filename, FILENAME_MAX, "%d%d%d%d_%s.txt", A, B, C, D, date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...