2013-08-13 4 views
7

तो मुझे यह स्ट्रिंग एक सी कोड में मिली है जो मुझे उस पुस्तक से मिली है जिसमें एक उद्धरण है, उसके बाद एक और स्ट्रिंग है जिसमें उस उद्धरण से एक शब्द है। जब यह सबस्ट्रिंग की स्थिति को खोजने के लिए प्रोग्राम को बताता है, तो यह संख्या 1 से गिनती शुरू करता है और 0 नहीं। यह क्यों है? यहाँ है क्या मेरा मतलब:सी कोड में आउटपुट संख्या 1 से नहीं और 0 से एक सरणी अनुक्रमणिका की गणना क्यों शुरू करता है?

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char str[]="No Time like the Present"; 
    char sub[]="Time"; 
    if (strstr(str, sub)== NULL) 
    { 
     printf("not found"); 
    } 
    else 
    { 
     printf("Index number found at %d",strstr(str,sub)-str); 
    } 
    return 0 
} 

तो यह कहूँगा: सूचकांक, नंबर 3

लेकिन यह नंबर 2 पर पाया सूचकांक मुद्रण नहीं किया जाना चाहिए पर पाया क्योंकि आप शून्य से शुरू? या आप कभी-कभी नंबर 1 से शुरू कर सकते हैं ??

+2

"नहीं" की तलाश करें। मुझे लगता है कि यह स्थिति 0 पर है। "समय" 3 वर्ण बाद में शुरू होता है, इसलिए यह स्थिति 3 से शुरू होता है। –

+4

क्या आप अंतरिक्ष को गिनना भूल गए? – sh1

+0

भूल गया ';' 'वापसी 0' – BLUEPIXY

उत्तर

3

हाँ यह हमेशा 0 पर शुरू होता है, इसलिए उत्पादन 3 है और अंतरिक्ष में भी एक चरित्र यहाँ के रूप में गिना नहीं 2.

+0

के लिए धन्यवाद, दूसरों की तुलना में अधिक स्पष्ट और संक्षिप्त –

16

नहीं, यह शून्य पर शुरू होता है:

No Time... 
^^^^ 

1

index भ्रमित न हों और lengthIndex और length अलग हैं।

char[] str = "stackoverflow"; 

str की लंबाई 13 वापस आ जाएगी।

'c' का सूचकांक str3 पर वापस आ जाएगा।

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