2012-03-07 16 views
6

क्षमा करें यदि यह एक बहुत ही आसान सवाल है, लेकिन मैं सी के लिए बहुत नया हूं। मैं char * s को युगल और स्याही में डालने में सक्षम होना चाहता हूं और कैसे एक स्पष्टीकरण नहीं मिल रहा है।आप एक char * को int या एक डबल में सी

संपादित करें: मैं उपयोगकर्ता इनपुट में पढ़ रहा हूं, जो एक char * है। इनपुट का आधा हिस्सा मैं कहूं, "23" से 23 और आधे से, उदाहरण के लिए, "23.4" से 23.4।

+0

क्या आपका मतलब है कास्ट या कनवर्ट करना? दूसरे शब्दों में आप '42" को '42' में कनवर्ट करना चाहते हैं या 'char * 'अंक को' int' – JaredPar

+0

'के रूप में स्मृति का इलाज करना चाहते हैं' स्ट्रेटोल ') का उपयोग करने के तरीके पर कार्य कोड मिल सकता है [यहां] (http://stackoverflow.com/a/2729534/50049), मैं इसे बहुत ही स्थानीयकृत के रूप में बंद कर रहा हूं क्योंकि आप जिस समस्या का सामना कर रहे थे, उसके बारे में आपको पूरी तरह से यकीन नहीं था। –

उत्तर

2

कड़ाई से बोलते हुए, आप यह कर सकते हैं: (int) सूचक।

हालांकि, आप शायद एटीई और एटोफ फ़ंक्शंस की तलाश में हैं।

atoi एक ऐसा फ़ंक्शन है जो एक char * को एक स्ट्रिंग में इंगित करता है जिसमें एक पूर्णांक में दशमलव में एक पूर्णांक होता है।

एटोफ भी डबल के लिए है।

+2

'atoi()' पर 'strtol()' कार्यों के परिवार की सिफारिश की जाती है, अगर केवल इसलिए कि 'atoi() 'विफल होने पर वही चीज़ लौटाता है और जब यह सफलतापूर्वक' 0' को पार करता है। –

+1

'atoi() 'किसी भी चीज की जांच में कोई त्रुटि नहीं है। 'strtol()' त्रुटियों को संभालता है, सार्थक त्रुटियों को सेट करता है और बाद में निरीक्षण के लिए इनपुट में पाया गया कचरा भी कॉपी करता है। –

+0

सच है, लेकिन atoi उच्च स्तर की भाषाओं में पूर्णांक के लिए कास्ट स्ट्रिंग के बराबर के करीब है। – Joshua

13

आप एक char* इस तरह डाली कर सकते हैं:

char *c = "123.45"; 
int i = (int) c;  // cast to int 
double d = (double) c; // cast to double 

लेकिन उस अतर्कसंगत परिणाम प्राप्त होंगे। यह पॉइंटर को पूर्णांक या डबल के रूप में माना जाता है।

मुझे लगता है कि तुम क्या चाहते पार्स (बल्कि कलाकारों की तुलना में) एक int या double में पाठ है। इसे आज़माएं:

char *c = "123.45"; 
int i = atoi(c); 
double d = atof(c); 
+0

धन्यवाद! यह वही है जो मैं चाहता हूं! – user1231120

+2

(यहां एक उपयोगकर्ता के रूप में बोलना, एक mod ​​नहीं) 'atoi()' सुरक्षित नहीं है। –

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