sscanf(input_str, "%5s", buf); //reads at max 5 characters from input_str to buf
लेकिन मैं%% के बजाय MACRO_SIZEs की तरह कुछ का उपयोग करने की आवश्यकता है 5ssscanf में चर लंबाई लंबाई चौड़ाई निर्दिष्ट करने के लिए कैसे?
एक तुच्छ समाधान एक ही
char fmt_str[100] = "";
snprintf(fmt_str, 100, "%%%ds", MACRO_SIZE);
sscanf(input_str, fmt_str, buf);
के लिए एक प्रारूप स्ट्रिंग बनाने के लिए है एक ही प्राप्त करने के लिए एक बेहतर तरीका है ?
बाधा इतनी अधिक नहीं है कि MACRO_SIZE स्थिर के रूप में मूल्यांकन करता है, लेकिन इसकी परिभाषा एक साधारण शाब्दिक है, है ना? उदाहरण के लिए, (5 * 25 + 3) की परिभाषा (जो संकलन समय पर निरंतर मूल्यांकन करती है) के परिणामस्वरूप 'snprintf (fmt_str, 100, "%" (5 * 25 + 3) "s", buf); ' – jhfrontz