LCS C程序在第一次输入时崩溃

时间:2016-02-29 03:26:36

标签: c arrays dynamic lcs

你好我是c的新手,我在运行代码时遇到了一些麻烦,一切编译都很好但是当我输入第一个输入时,exe崩溃了。我很确定问题在于我的数组的内存分配或我对指针的使用,但我似乎无法弄清楚问题。

这是我的2个文件。

的main.c

    #include "stdheader.h"
    int main(int argc, char ** argv){
        char* s1;
        char* s2;
        char* s3;
        while (scanf("%c\n", *s1) != (EOF)){
            scanf("%c\n", *s2);
            LCS(*s1,*s2,*s3);
            printf("%c \n", *s3);
        }

    }

lcs.c

    #include "stdheader.h"
    void LCS(char*s1, char*s2, char*s3){
        int i, j, k;
        int L1= strlen(s1);
        int L2= strlen(s2);
        int **A = (int**)malloc(sizeof(int *)*(L1+1));
        for (i=0; i<= L1; i++){
            A[i]= malloc(sizeof(int)*(L2+1));
        }
        for (i=0; i<=L2; i++){
            A[L1][i]=0;
        }
        for (j=0; i<=L1; j++){
            A[j][L2] = 0;
        }
        for (i=L1-1; i >= -1; i--){
            for (j=L2-1; j>= -1; j--){
                if (s1[i]== s2[j]){
                    A[i][j]= 1 + A[i+1][j+1];
                }
                else
                    A[i][j] = fmax(A[i+1][j],A[i+1][j+1]);

            }
        }
        i=0; j=0; k=0;
        int true = 0;
        while(true=0){
            if (i>L1 || j>L2 || A[i][j]==0)
                true=1;
            if (s1[i] == s2[j]){
                s3[k]=s1[i];
                i++; j++; k++;
            }
            else if (A[i][j+1] >= A[i+1][j])
                j++;
            else
                i++;
        }
        for(i=0; i<= L1; i++){
            free(A[i]);

        }
        free(A);
        s3[k]= '\0';

    }

0 个答案:

没有答案