आप एक बफर या इनपुट स्टोर करने के लिए अन्य स्थान को इंगित करने के pass
आरंभ नहीं किया है।
कुछ इस तरह सरल के लिए, आप एक सूचक के बजाय char
की एक सरणी के रूप में pass
घोषणा कर सकते हैं:
char pass[N]; // where N is large enough to hold the password plus a 0 terminator
scanf("%s", pass);
if (strcmp(pass, "acopio") == 0)
{
...
}
जब यह sizeof
, _Alignof
के संकार्य है, या एकल &
ऑपरेटरों, या है सिवाय घोषणा में एक और सरणी शुरू करने के लिए एक स्ट्रिंग शाब्दिक उपयोग किया जा रहा है, अभिव्यक्ति प्रकार "0 -के एन-तत्व सरणी" को "सूचक से T
" प्रकार की अभिव्यक्ति में परिवर्तित किया जाएगा (और "क्षय") अभिव्यक्ति का पता होगा सरणी का पहला तत्व।
जब आप scanf
और strcmp
, अभिव्यक्तिpass
"char
के एन-तत्व वाली सरणी" से "char
सूचक" से बदल जाती है के प्रकार के एक तर्क के रूप pass
गुजरती हैं, और अभिव्यक्ति के मूल्य है pass
, या &pass[0]
के पहले तत्व का पता।यही कारण है कि आपको कॉल में &
ऑपरेटर का उपयोग करने की आवश्यकता नहीं है।
इसी तरह, strcmp
कॉल में, स्ट्रिंग शाब्दिक "Acopio" (सी में const char
++) के प्रकार के "char
के 7-तत्व वाली सरणी" एक अभिव्यक्ति के लिए "char
सूचक" से बदल जाती है।
स्रोत
2012-11-06 15:01:08
क्यों -1? मैं सीख रहा हूँ; यहां जवाब खोजने की कोशिश की; और शुरुआती लोगों के लिए अन्य उत्तरों को समझना आसान नहीं है। – jotape