sscanf(input_str, "%5s", buf); //reads at max 5 characters from input_str to buf
Nhưng tôi cần phải sử dụng một cái gì đó như% MACRO_SIZEs thay vì% 5sLàm thế nào để vượt qua độ dài biến chiều dài specifier trong sscanf?
Một giải pháp tầm thường là để tạo ra một chuỗi định dạng cho cùng
char fmt_str[100] = "";
snprintf(fmt_str, 100, "%%%ds", MACRO_SIZE);
sscanf(input_str, fmt_str, buf);
Có cách nào tốt hơn để đạt được cùng ?
Ràng buộc không quá nhiều mà MACRO_SIZE đánh giá dưới dạng hằng số, nhưng định nghĩa của nó là một chữ đơn giản, đúng không? Ví dụ, định nghĩa (5 * 25 + 3) (đánh giá hằng số tại thời gian biên dịch) dẫn đến 'snprintf (fmt_str, 100,"% "(5 * 25 + 3)" s ", buf);' – jhfrontz