Używam C++, ale Postanowiłem przeanalizować wiersze pliku dziennika z sscanf
. Po przeczytaniu każdej linii należy wyodrębnić dane i zapisać je w zmiennych.Przeczytaj pełną nazwę sscanf
string test = "[06/03/2013 18:15:23] INFO - Open [Johny Cage]";
int day, month, year, second, minute, hour;
char name[128];
int c = sscanf(test.c_str(), "[%d/%d/%d %d:%d:%d] INFO - Open [%127[^\n]%c]",
&day, &month, &year, &second, &minute, &hour, name);
if (c == 7)
{
cout << name << endl;
}
muszę odczytać nazwy jako Johny Cage
(Nazwa może zawiera spacje) i przechowywać je name
, ale wyjście jest:
Johny Cage]
Problemem jest to, bieżący ]
. Jak mogę użyć sscanf
, którego nie czyta ostatni ]
?
Użyj '[^]]' zamiast '[^ \ n]'. – jxh
@ user315052: Nie, program się zawiesił! – deepmax
'name [strlen (name) - 1] = 0;' –