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 に答える