同一个字符不同的数字

时间:2017-01-27 21:53:56

标签: c string char

我最近又开始了C,我觉得我有一个非常非常愚蠢的问题,我敢打赌这只是我的代码中的一个非常小的错误,但是我找不到它(非常尴尬,我知道......)。

typedef char* String;

int contains(String string, String pattern);

int contains(String string, String pattern){
    int count = 0;
    for(int i = 0; i < strlen(string)-strlen(pattern)+1; i++){
        printf("%d, %d\n", string[i], pattern[1]);
        if(string[i] == pattern[1]){
            printf("Found start... TODO");
        }
    }
    return count;
}

int main(void){
    int z = contains("Heggo", "go");
    return 0;
}

稍后代码会在字符串中找到子字符串,但是稍后要实现(我已经在java中实现了,这很容易),现在,我很难解决1个问题:我打印字符串中的实际字母为循环和模式字符串的第一个字母。但我的输出是:

72,111

101,111

103,111

103,111

所以......为什么'g'在第一个字符串数值为103,但是模式字符串111中的'g'?它真的困扰我,因为我打赌这只是我真正愚蠢的错误..

1 个答案:

答案 0 :(得分:2)

数组索引在C中以零开头。你想要

    printf("%d, %d\n", string[i], pattern[0]);
    if(string[i] == pattern[0]){
        printf("Found start... TODO");
    }

pattern[1]处的字符是“o”:

>>> ord('o')
111