为什么C代码中的输出从数字1开始计算数组索引,而不是从0开始计算?

为什么C代码中的输出从数字1开始计算数组索引,而不是从0开始计算?,c,C,这是一个C代码中的字符串,我从一本书中得到,其中有一个引号,后面是另一个字符串,其中有一个单词来自于这个引号。当它告诉程序找到子字符串的位置时,它从数字1开始计数,而不是从0开始计数。为什么会这样?我的意思是: #include <stdio.h> #include <string.h> int main() { char str[]="No Time like the Present"; char sub[]="Time"; if (strst

这是一个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
}
#包括
#包括
int main()
{
char str[]=“没有像现在这样的时间”;
char sub[]=“时间”;
if(strstr(str,sub)==NULL)
{
printf(“未找到”);
}
其他的
{
printf(“在%d处找到的索引号”,strstrstr(str,sub)-str);
}
返回0
}
所以它会说: 索引位于第3位

但它不应该是第2位的打印索引吗,因为从零开始?或者你有时可以从数字1开始

否,它从零开始:

No Time...
^^^^
0123

是的,它总是从0开始,空格也被计算为一个字符,因此输出是3而不是2。

不要混淆
索引和
长度<代码>索引和长度是不同的

char[] str = "stackoverflow";
str的长度
将返回
13


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

尝试查找“否”。我打赌它在0号位置。“时间”从3个字符后开始,所以它从位置3开始。你忘了数空格了吗?忘了“;”对于
返回0