int * ShiftTable(char Pattern[]){
int PatternSize = strlen(Pattern);
int i;
int j;
int * Table = malloc(sizeof(char) * 26);
for(i = 0; i <= 25 ; i++ )
Table[i] = PatternSize;
for(j = 0; PatternSize - 2 ; j++)
Table[Pattern[j]] = PatternSize - 1 - j;
return Table ;
}
int main(){
char y [] = "aslifee";
int d = ShiftTable(y);
int i;
for(i = 0 ; i <= 26 ; i++)
printf("%d ", d[i]);
printf(" weerwerwef "); // I write here because when I run, also this code doesn't work so I made a mistake.
getchar();
}
大家好,我想做horspool算法的班次表。然后我必须使用指针返回一个数组(实际上是指针)。我在互联网上看了很多例子,但我找不到明确的问题解释。当我运行此代码时,第一个黑屏出现,然后我采取“Windows stoped working”错误。我哪里错了?我该怎么做才能解决这个问题?
我修好了,我的问题是(j = 0; PatternSize - 2; j ++)在这一行和 表[Pattern [j]] = PatternSize - 1 - j;在这一行。第一行我做了一个语法错误,它应该是(j = 0; j&lt; = PatternSize - 2; j ++);第二行Pattern [j]返回ASCI值。 “a”的ASCI值是97所以我应该像这样修复:表[Pattern [j] -97] = PatternSize - 1 - j;最后,以下代码正在运行。谢谢大家,对不起话题感到抱歉。
int * ShiftTable(char Pattern[]){
int PatternSize = strlen(Pattern);
int i;
int j;
int * Table = malloc(sizeof(int) * 26);
for(i = 0; i <= 25 ; i++ )
Table[i] = PatternSize;
for(j = 0; j<=PatternSize - 2 ; j++)
Table[Pattern[j]-97] = PatternSize - 1 - j;
return Table ;
}
int main(){
char y [] = "aslifee";
int *d = ShiftTable(y);
int i;
for(i = 0 ; i<26 ; i++)
printf("%d ", d[i]);
getchar();
}
答案 0 :(得分:1)
错字错误。变化:
int d = ShifTable(y);
到
int d = ShiftTable(y);