你好我是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';
}