我最近又开始了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'?它真的困扰我,因为我打赌这只是我真正愚蠢的错误..
答案 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