0

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

这是我的2个文件。

主程序

    #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';

    }
4

0 回答 0