-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。在 little-endian 系统中,前两个字节是“\”,后跟零,用于终止字符串。

你想说

wprintf(L"%s", name);

如果您在调试器中单步执行,您将看到“名称”包含您期望的内容。

于 2013-06-28T22:47:49.880 回答