में चार को जोड़ने के बिना पार्स इंटीजर मैं एक पूर्णांक पार्स करना चाहता हूं लेकिन मेरा निम्नलिखित कोड स्ट्रिंग्स को "3 बी" भी स्वीकार करता है जो संख्या के रूप में शुरू होता है लेकिन वर्णों को जोड़ता है। मैं ऐसे स्ट्रिंग्स को कैसे अस्वीकार करूं?सी
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n;
if(argc==2 && sscanf(argv[1], "%d", &n)==1 && n>0){
f(n);
return 0;
}
else{
exit(EXIT_FAILURE);
}
}
आप 'sscanf()' का उपयोग नहीं करते हैं; आप 'strtol()' या इसी तरह का उपयोग करते हैं, और जांचें कि अंतिम पॉइंटर बिंदु कहां है। या, यदि आपको 'sscanf() 'का उपयोग करना होगा, तो आप' int pos; ... अगर (... && sscanf (argv [1], "% d% n", & n, और pos) == 1) '- ध्यान दें कि '% n' को रूपांतरण के रूप में नहीं गिना जाता है, इसलिए तुलना अभी भी' 1', '2' नहीं। फिर आप जांचें कि क्या 'argv [1] [pos] 'एक शून्य बाइट है या नहीं, शिकायत है कि यह नहीं है। –
http://stackoverflow.com/questions/13199693/what-does-the-n-stand-for-in-sscanfs-d-n-i-n –