7

所以我在一个 C 代码中得到了这个字符串,我从一本有引号的书中得到,然后是另一个字符串,其中有一个来自该引号的单词。当它告诉程序查找子字符串的位置时,它从数字 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 开始??!

4

3 回答 3

16

不,它从零开始:

No Time...
^^^^
0123
于 2013-08-13T10:23:57.330 回答
3

是的,它总是从 0 开始,这里的空格也算作一个字符,所以输出是 3 而不是 2。

于 2013-08-13T10:26:17.740 回答
1

不要混淆indexlengthIndex并且length是不同的。

char[] str = "stackoverflow";

str将返回的长度13

'c'in 的索引str将返回3

于 2013-08-13T10:28:06.940 回答