मैं की तरहवर्ग कोष्ठक] sscanf में
"[25, 28] => 34"
मैं इसे बाहर का परीक्षण करने के लिए एक छोटा सा कार्यक्रम लिखा लाइनों स्कैन करना चाहते हैं पलायन:
#include <cstdlib>
#include <iostream>
int main() {
char* line = "[25, 28] => 34";
char a1[100], a2[100];
int i;
sscanf(line, "[%[^,], %[^\]] => %i", a1, a2, &i);
std::cout << "a1 = " << a1 <<"\na2 = " << a2 << "\ni = "<<i <<"\n";
return 0;
}
संकलन इस देता है
warning: unknown escape sequence '\]'
और आउटपुट
a1 = 25
a2 = 28
i = -1073746244
अगर मैं
sscanf(line, "[%[^,], %[^]] => %i", a1, a2, &i);
के लिए इसे बदल मैं कोई संकलक शिकायतें मिल, लेकिन अभी भी
a1 = 25
a2 = 28
i = -1073746244
मैं जानता हूँ कि समस्या दूसरा टोकन में है क्योंकि
sscanf(line, "[%[^,], %[]] => %i", a1, a2, &i);
देता
a1 = 25
a2 = 28
i = 34
लेकिन मैं दूसरे टोकन के लिए एक समाप्ति स्थिति का उपयोग करना चाहता हूं। मैं उसको कैसे करू?
-1 काम नहीं करेगा - '% s 'अगले व्हाइटस्पेस तक सब कुछ मेल खाता है, इसलिए यह निम्न विराम चिह्न (', 'या'] ') को अवशोषित करेगा और बाद वाला मैच विफल हो जाएगा। –
भगवान मैं समय के पीछे थोड़ा सा हूँ ... 8) अच्छी तरह से मतदान नीचे। – ColWhi