Когда я использую sscanf() в следующем коде, он берет всю строку и по какой-то причине помещает ее в первую строку, и я не вижу никаких проблем с ней. Выход из Msg() выходит как PatchVersion=1.1.1.5 = °?¦§-
sscanf() не распознает формат должным образом
файл выглядит следующим образом (за исключением каждый из них является новая линия, не знаю, почему он показывает, как один на StackOverflow)
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 строках). Это облегчает чтение другим пользователям, и вы, вероятно, найдете ошибку в этом процессе. –