C - 将当前日期放在文件名中

时间:2011-02-28 06:34:16

标签: c string

我有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 个答案:

答案 0 :(得分:6)

char filename [ FILENAME_MAX ];
snprintf(filename, FILENAME_MAX, "%d%d%d%d_%s.txt", A, B, C, D, date);