buffer - Arithmetic overflow when using atoi() on argv[1] in C -


मैं atoi (argv [1]) का उपयोग कर रहा हूं मेरे कोड का एक स्निपेट है

  शून्य मुख्य (int argc, char * argv []) {int evenOrOdd = 0; Int inputtedNum = 0; Pid_t pid; Int i; चार बफ [BUF_SIZE]; अगर (argc! = 2) // सुनिश्चित करें कि उपयोगकर्ता इनपुट को सही ढंग से दर्ज किया गया है {printf ("कृपया इनपुट का उपयोग करें: ./a.out # \ n"); } Else {inputtedNum = atoi (argv [1]); अगर (इनपुटटेड नं & lt; 0) // सुनिश्चित करें कि संख्या सकारात्मक है {printf ("कृपया एक सकारात्मक संख्या का उपयोग करें। \ N"); वापसी; }} // ...}  

कोड आगे बढ़ता है और क्या नहीं है, लेकिन कुछ संख्याओं में प्रवेश करने पर, कभी-कभी यह विश्वास होगा कि वे नकारात्मक हैं। अगर मैं 123456789 दर्ज करता हूं तो उसे कोई समस्या नहीं होगी और प्रोग्राम को सही ढंग से चलाने के लिए अगर मैं 12345678910 दर्ज करता हूं तो यह सोचना होगा कि संख्या एक नकारात्मक संख्या है। क्या मैं यहाँ कुछ बफर त्रुटि में चल रहा हूं जहां नकारात्मक झंडे आती हैं? मैं इसे ठीक करने के लिए बिल्कुल निश्चित नहीं हूं।

कोई भी और सभी मदद की सराहना की जाती है!

int एक अपेक्षाकृत संकीर्ण पूर्णांक प्रकार है, और यह भी एक हस्ताक्षरित प्रकार है। संख्या को पार्स करने के लिए अहस्ताक्षरित लंबे का उपयोग करें inputtedNum और strtoul (argv [1], 0, 0)


Comments