Tôi đang sử dụng C++, nhưng Tôi quyết định phân tích cú pháp các dòng của tệp nhật ký với sscanf
. Sau khi đọc từng dòng, nó sẽ trích xuất dữ liệu và lưu trữ chúng vào các biến.Đọc tên đầy đủ bằng 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;
}
Tôi cần đọc tên như Johny Cage
(Tên lẽ có không gian) và lưu nó để name
, nhưng sản lượng là:
Johny Cage]
Vấn đề là đường nhỏ ]
. Làm thế nào tôi có thể sử dụng sscanf
mà nó không đọc ]
cuối cùng?
Sử dụng '[^]]' thay vì '[^ \ n]'. – jxh
@ user315052: Không thành công, chương trình đã bị lỗi! – deepmax
'name [strlen (name) - 1] = 0;' –