當我在下面的代碼中使用sscanf()時,由於某種原因,它將整行放在第一個字符串中,並且我沒有發現任何問題。從消息()的輸出是走出像PatchVersion=1.1.1.5 = °?¦§-
sscanf()無法正確識別格式
文件看起來是這樣的(除了每個是一個新行,不知道爲什麼它顯示了一個在計算器上)
PatchVersion=1.1.1.5
ProductName=tf
appID=440
代碼:
bool ParseSteamFile()
{
FileHandle_t file;
file = filesystem->Open("steam.inf", "r", "MOD");
if(file)
{
int size = filesystem->Size(file);
char *line = new char[size + 1];
while(!filesystem->EndOfFile(file))
{
char *subLine = filesystem->ReadLine(line, size, file);
if(strstr(subLine, "PatchVersion"))
{
char *name = new char[32];
char *value = new char[32];
sscanf(subLine, "%s=%s", name, value);
Msg("%s = %s\n", name, value);
}
else if(strstr(subLine, "ProductName"))
{
char *name = new char[32];
char *value = new char[32];
sscanf(subLine, "%s=%s", name, value);
Msg("%s = %s\n", name, value);
}
}
return true;
}
else
{
Msg("Failed to find the Steam Information File (steam.inf)\n");
filesystem->Close(file);
return false;
}
filesystem->Close(file);
return false;
}
以供將來參考,*請*發表最小的代碼示例,即再現錯誤最小編譯代碼(你大約4行可以做這個例子)。這使得其他人更容易閱讀,並且您可能會在過程中發現錯誤。 – 2010-11-05 13:02:05