-1

_snwprintf(); を使用して名前に文字列を入れようとしています。その名前でファイルを開くためですが、残念ながら名前で取得するものはすべて文字列の最初の文字だけです

ここにコードがあります:

# include<stdio.h>
#define LN L"\\SystemRoot\\System32\\Log.txt"

void main (void)
{
       wchar_t name[1024];
   _snwprintf(name,sizeof(name),L"%s",LN);
   printf("%s",name);
       getchar();
}

そして、私が得る出力は\です

ユーザーモードからファイルを読み取るためにカーネルモードで使用していますが、そのような小さなことで失敗します:)

この文字列の名前全体を取得する方法を教えてください。お願いします!

4

1 に答える 1

3

そうですね、Unicode 文字列を ANSI として扱っています。リトルエンディアン システムでは、最初の 2 バイトは "\" で、その後にゼロが続き、文字列が終了します。

あなたが言いたい

wprintf(L"%s", name);

デバッガーをステップ実行すると、'name' に期待どおりの内容が含まれていることがわかります。

于 2013-06-28T22:47:49.880 に答える