2013-04-22 7 views
6

मैं सरणी में डेटा को बदलने के लिए कोशिश कर रहा हूँ में अहस्ताक्षरित चार, यह मेरा कोड का हिस्सा है:scanf हेक्स

u_char paket[100]; 
//here i put some data into array and then trying to change it by user 
scanf("%hhx.%hhx.%hhx.%hhx.%hhx.%hhx", &paket[0], &paket[1], &paket[2], &paket[3], &paket[4], &paket[5]); 

जब मेरे इनपुट उदाहरण 88.88.88.88.88.88 के लिए यह paket[0] - paket[5] 88 करने के लिए सेट है, लेकिन यह भी paket[6],paket[7] में परिवर्तन और paket[8] से 0.

यह कैसे संभव है और इसे कैसे ठीक करें? मैं केवल [0] - [5]

+0

अपने 'u_char' सरणी की घोषणा करने के लिए सभी तत्वों को प्रारंभ हो सकता है 0. कुछ फेलो का जवाब जिन्होंने इसे एक मिनट पहले हटा दिया था शायद सही था: आप एक बिग एंडियन सिस्टम पर प्रत्येक प्रारूप पहचानकर्ता पर एक int aka 4 बाइट्स/वर्ण स्कैन कर सकते हैं। – collapsar

+0

आह, मेरी गलती, मैंने पूरा कोड पोस्ट नहीं किया। पहली और दूसरी पंक्ति के बीच मैं उस सरणी में डेटा लोड करता हूं। तो स्कैनफ़ से पहले उन तत्वों को 0 पर सेट नहीं किया गया है, समस्या स्कैनफ़ के साथ है। – user2306381

उत्तर

0

आपका कोड बदलने की जरूरत है

u_char paket[100]; 
scanf("%hhx.%hhx.%hhx.%hhx.%hhx.%hhx", &paket[0], &paket[1], &paket[2], &paket[3], &paket[4], &paket[5]) 

paket[6], paket[7] and paket[8] के मूल्यों को बदल नहीं करता है ठीक है।

4

आपका कोड सी 99 और बाद में सही है। संभवतः आप एक सी मानक पुस्तकालय का उपयोग कर रहे हैं जो hh लंबाई संशोधक का समर्थन नहीं करता है, जिसे सी 99 में पेश किया गया था; शायद माइक्रोसॉफ्ट सी मानक पुस्तकालय।

आप इस वर्ष सी मानक पुस्तकालय का समर्थन करने की जरूरत है, तो आप उदाहरण के लिए, C89-संगत होना करने के लिए अपने कोड को फिर से लिखने करना होगा:

unsigned p[6]; 

if (scanf("%x.%x.%x.%x.%x.%x", &p[0], &p[1], &p[2], &p[3], &p[4], &p[5]) == 6) 
{ 
    int i; 
    for (i = 0; i < 6; i++) 
     paket[i] = p[i]; 
} 
+0

बहुत बहुत धन्यवाद! बीटीडब्ल्यू हस्ताक्षरित पी [6]; या हस्ताक्षरित चार पी [6]; ? या कोई फर्क नहीं पड़ता? – user2306381

+0

@ user2306381: इसे 'हस्ताक्षर किए गए पी [6];' की आवश्यकता है, क्योंकि '% x' को 'हस्ताक्षरित' के लिए सूचक नहीं है, * नहीं * हस्ताक्षर किए गए चार के लिए एक सूचक। – caf

संबंधित मुद्दे