UnlockOffset
是DWORD。 thisKey
是炭[5]相當於C#中的sscanf_s?
if(EOF == sscanf_s(thisKey, "%d", &UnlockOffset))
如何將上面的代碼在c#做什麼?
DWORD
轉化爲UInt32
和thiskey
保持char
陣列,但我仍然不明白sscanf_s
。
PS:我沒有檢查MSDN,但無法很好地理解它,這就是爲什麼我在這裏發佈它。
UnlockOffset
是DWORD。 thisKey
是炭[5]相當於C#中的sscanf_s?
if(EOF == sscanf_s(thisKey, "%d", &UnlockOffset))
如何將上面的代碼在c#做什麼?
DWORD
轉化爲UInt32
和thiskey
保持char
陣列,但我仍然不明白sscanf_s
。
PS:我沒有檢查MSDN,但無法很好地理解它,這就是爲什麼我在這裏發佈它。
sscanf_s
基本上讀取一個字符串並提取匹配格式字符串的東西。如果它不能提取東西來匹配所有的格式,它會返回EOF
。
你可以做類似
string str = new string(thisKey);
if (!UInt32.TryParse(str, out UnlockOffset))
這將完成類似的東西,但也可能是或多或少嚴格。 UInt32.TryParse
如果可以轉換字符串則返回true,否則返回false,因此檢查EOF將等同於查看TryParse是否爲false。
謝謝我也想知道EOF是從哪裏來的;) – Prix 2011-02-23 04:50:19
通常,您將使用UInt32.Parse
(或TryParse
)從string
中提取信息。使用char[]
來存儲C#中的字符串值很少見,因爲string
更合適。
嗯,我實現的sscanf'()'升因爲我試圖轉換代碼,因爲我不知道如何轉換sscanf_s直到現在我沒有打擾將其更改爲字符串。 – Prix 2011-02-23 04:49:03
如果thisKey爲「123 456 739」,那麼sscanf_s(thisKey, "%d", &UnlockOffset))
會得到123到UnlockOffset
這裏有一個大致相當於
string str = new string(thisKey);
string[] strAr = str.Split(' ');
UnlockOffset = Convert.ToUInt32(strAr!=null ? strAr[0] : str);
既然大家都已經提到uint.Parse
(和uint.TryParse
),您可以將您的字符數組的整數這樣的:
uint UnlockOffset = 0;
foreach (char digit in thisKey)
{
UnlockOffset *= 10;
UnlockOffset += (uint)(digit - '0');
}
我在C#[這裏](http://www.blackbeltcoder.com/Articles/strings/a-sscanf-replacement-for-net) – 2012-02-14 19:42:57