在Function中调用指针

时间:2014-05-01 16:50:08

标签: c pointers error-handling

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();
        }

1 个答案:

答案 0 :(得分:1)

错字错误。变化:

int d = ShifTable(y);

int d = ShiftTable(y);