下面的代码显示了分段错误。 错误占优势 尝试了许多变化,但没有用
#include<conio.h>
#include<stdio.h>
void main()
{
static int a[100][100],b[100][100],c[100][100]={0};
int m,n,p,i,j,k;
printf("Enter no pf rows and colums for matrix A");
scanf("%d%d",&m,&n);
for(i=0;i<=m-1;i++)
{
for(j=0;j<=n-1;j++)
{
printf("enter no.");
scanf("%d",&a[i][j]);
}
}
printf("Enter no. of column for matrix b");
scanf("%d",&p);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=p-1;j++)
{
printf("enter no.");
scanf("%d",&b[i][j]);
}
}
for(i=0;i<=m-1;i++)
{
for(j=0;i<=p-1;j++)
{
c[i][j]=0;
for(k=0;k<=n-1;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
printf(" The resultant matrix is");
for(i=0;i<=m-1;i++)
{
for(j=0;j<=p-1;j++)
{
printf("%d\t",c[i][j]);
}
printf("\n");
}
getch();
}
在turbo c ++上尝试过
错误139分段错误
错误139分段错误
这是因为
for(j=0;i<=p-1;j++)
一定是
for(j=0;j<=p-1;j++)
当前j增加没有结束所以c[i][j]=0;
和其他访问是在数组之外具有未定义的行为(您的分段错误)
其他评论:
for(j=0; j < p; j++)
是一个更好的选择兼容例如size_t
与索引的正确类型if (scanf("%d%d",&m,&n)!= 2)
fprintf(stderr, "invalid numbers");
else {