1
#ifndef UNICODE
#define UNICODE
#endif

#include <Windows.h>
#include <cstdio>

TCHAR* getSystemVolumine()
{
    TCHAR volumine[2];
    TCHAR buffer[30];

    GetSystemWindowsDirectory(buffer,30);

    for(int i=0 ; i < 2 ; i++)
        volumine[i]=buffer[i];

    return volumine;
}


int main()
{
    wprintf(L"Your system volumine letter%s\n",getSystemVolumine());
    system("pause");
}

我不知道这段代码有什么问题。调试既未显示错误也未显示警告,但输出为:

Your system volumine letter
Press any key to continue...
4

1 回答 1

5

您正在返回一个指向局部变量的指针,当函数返回时,该变量不再存在 wprintf 的字符串必须以 '\0' 结尾。

#include <Windows.h>
#include <cstdio>

void getSystemVolumine(TCHAR *vol)
{
    TCHAR buffer[30];

    GetSystemWindowsDirectory(buffer,30);

    for(int i=0 ; i < 2 ; i++)
        vol[i]=buffer[i];

    vol[2] = 0;
}


int main()
{
    TCHAR vol[3];

    getSystemVolumine(vol);

    wprintf(L"Your system volumine letter %S\n",vol);
    system("pause");
}
于 2012-04-28T14:08:26.137 回答