2012-10-29 21 views
5

सी # के दो साल बाद, मैंने सी की कोशिश की और मेरे पास कुछ "नोब" त्रुटियां हैं।पहचानकर्ता नहीं मिला?

मैं प्रत्यावर्तन के साथ एक सरणी रिवर्स करने की कोशिश की, और मैं यह त्रुटि है:

#include "stdafx.h" 
#include "stdio.h" 

int main() 
{ 
    int niz[] = {1,2,3,4,5,6}; 
    int duzina = sizeof(niz)/sizeof(int); 
    printf("%s",niz[Rekurzija(duzina)]); 
    getchar(); 
} 

int Rekurzija(int niz) 
{ 
    int i = sizeof(niz)/sizeof(int); 
    while(i!=0) 
     return Rekurzija(i-1); 
} 
+1

@irabaxter: आपने टाइटलो को शीर्षक में अन्य टाइपो के साथ संपादित किया :) – Wug

+0

@Wug: Glad * someone * ध्यान दे रहा है। धन्यवाद। –

उत्तर

5

सी में आप समारोह प्रोटोटाइप समारोह से पहले सूचीबद्ध होना चाहिए:

error C3861: 'Rekurzija' indentifer not found

यह मेरा कोड है जो इसे बुलाता है।

तो तुम के बाद अपने शामिल निम्नलिखित जोड़ना चाहिए:

int Rekurzija(int niz);

सूचना है कि एक प्रोटोटाइप बिना, चीज़ें अभी भी काम कर सकते हैं; कंपाइलर प्रोटोटाइप के लिए अनुमान लगाएगा लेकिन अगर समस्या वास्तव में आपके काम से अलग है तो समस्याएं उत्पन्न होंगी।

6

सी में, सबकुछ इस्तेमाल होने से पहले घोषित किया जाना चाहिए। तो अगर आप मुख्य पहले Rekurzija के लिए एक घोषणा जोड़ना होगा:

int Rekurzija(int); 

यह सिर्फ संकलक कि जब यह Rekurzija कॉल बाद में देखता है, कि एक समारोह कॉल किसी पूर्णांक ले रहे हैं और किसी पूर्णांक लौटने है बताता है। कॉल को संभालने के लिए यह सब कुछ है, परिभाषा कहीं और हो सकती है, जैसे कि आपके मामले में मुख्य रूप से नीचे, या यहां तक ​​कि किसी अन्य फ़ाइल में, जैसा कि बहुत आम है (एक .h फ़ाइल में डेलरेशन, और एक .c फ़ाइल में परिभाषा) ।

+0

हाहा यह काम !!! धन्यवाद दोस्तों .. :) – DocNet

+0

कोई समस्या नहीं है। जब आप पूरा कर लें तो प्रश्न को बंद करना याद रखें (यानी समाधानों में से एक को चेकमार्क करने के लिए)। – amaurea

1

सी में, आपको संदर्भित करने से पहले इकाइयों को घोषित करना होगा।

आप जोड़ने की जरूरत:

int Rekurzija(int niz); 

संकलक कि Rekurzija मौजूद है बताने के लिए, और गुण किस तरह यह है एक "आगे" घोषणा के रूप में (जैसे, यह पूर्णांक तर्क और परिणाम के साथ एक समारोह है) आपके मुख्य समारोह से पहले।

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