C编程文件名是中文符号

时间:2015-06-13 11:14:48

标签: c strftime time.h

我正在尝试修改一些源代码,因为我需要根据日期创建文件名,但文件名是用中文符号创建的。我正在使用nmake编译visual studio和unicode。

我不确定这是代码问题还是编译器问题。

代码提取:

   struct tm * timeinfo;
    struct tm *__cdecl localtime(const time_t *t);
    TCHAR buffer[80];
    time_t rawtime;
    rawtime = time(NULL);
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    strftime(buffer, sizeof(buffer), "%d%m%Y%H%M%S", timeinfo);
    prd->command[i] = '\0';

    LPTSTR t;
    for (t = buffer; *t; t++) {
        if ((*t != '<') && (*t != '>') && (*t != '\"') &&
            (*t != '|') && (*t != '/') && (*t != '\\') &&
            (*t != ':'))
            prd->command[i++] = *t;
    }
    //lstrcat(prd->command, buffer);
    i = lstrlen(prd->command);

经过一些可能重复的调查后,我现在有了工作代码。我已经预料到并且调查它与TCHAR转换有关,但没有得到答案。我对此做了一些调查,并遇到了wcsftime。这似乎有效,意味着我不需要进行其他修改就可以使代码工作并在VS2013中编译好。

工作代码:

        struct tm * timeinfo;
    struct tm *__cdecl localtime(const time_t *t);
    wchar_t buffer[80];
    time_t rawtime;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    wcsftime(buffer, sizeof(buffer), L"%Y%m%d_%H%M%S", timeinfo);
    prd->command[i] = '\0';
    lstrcat(prd->command, buffer);
    i = lstrlen(prd->command);
    s++;

0 个答案:

没有答案