2013-06-28 126 views
-1

我試圖把一些字符串放在名稱中使用_snwprintf(); 與它的名字打開文件 但不幸的是所有我在名字得到的是一個字符串我正在嘗試使用函數_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(); 
} 

和輸出我得到的是\

我在內核模式下使用它來從用戶模式讀取文件,並且我在這樣的小東西上失敗:)

可以有人請賜教我如何獲取這個字符串的全名? PLS!

+2

呃......你是不是正在編寫內核模式代碼?如果是這樣,請停下來問自己一個問題:「我準備好編寫內核模式代碼了嗎?」仔細想想這個問題,給自己一個誠實的答案。 –

+0

謝謝Nik,我的回答是否定的,我不會停止編寫我的內核代碼,它已經97%的工作,並順便說一句今天它正在工作。 我可能不擅長字符串和文件(我從來沒有),但上帝保佑一些人2月2日我擁有我所有的工作。 – user2533527

+1

好吧...祝你好運。 –

回答

3

對,你把一個Unicode字符串視爲ANSI。在小端系統中,前兩個字節是「\」,後面跟着零,這終止了字符串。

你想說

wprintf(L"%s", name); 

如果您在調試器逐步完成,你會看到「名稱」包含你所期望的。

+0

你是對的:)謝謝:) – user2533527

相關問題