2012-04-19 6 views
2

Я получил syslog сообщениесинтаксического анализа системного журнала сообщение через sscanf

<14>2012-04-19T03:54:18+08:00.527800 server3000 status: 00|00|The average CPU, memory, disk usage and total network flow are 5.0%, 5.0%, 5.0% and 5 bytes respectively for the last hour.\n 

Как я могу получить слово 2012-04-19,03:54:18+08:00.527800,server3000,status,00,00 and 5.0 через функцию sscanf?

#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
int t1,t2 = 0; 
char programname[20], deviceip[16], date[11], time[9]; 
char logmsg[30]; 
const char * s = "<14>2012-04-19T03:54:18.527800+08:00 server3000 status: 00|00|The average CPU, memory, disk usage and total network flow are 5.0%, 5.0%, 5.0% and 5 bytes respectively for the last hour"; 
sscanf(s, "<%*d>%[^T]T%[^.].%*[^ ] %[^ ] %[^:]: %d|%d|%[^\n]", date, time,deviceip, programname, &t1, &t2, logmsg); 
return 0; 
} 

ответ

0

Вы можете, как сохранить результат sscanf и проверить его значение:

int rc = sscanf(...); 
if(rc < 7) 
    // failed to match or extract 

sscanf в коде возвращает 7, что означает, что ваша строка формат соответствует и извлекается все 7 аргументов.

Смежные вопросы