r*c 行列の入力を取得するためにこのコードを書きました
r -> 行 c -> 列
r<=c の場合は問題なく動作しますが、r>c の場合は正しい出力を生成できません。
例:
r=6、c=2
入力: 1 2 3 4 5 6 7 8 9 10 11 12
出力:
1 2 11 12 5 6 11 12 11 12 11 12
どこが間違っているのか教えてください。一定サイズの配列を使用したくありません。
#include <stdio.h>
void scanmatrix(int* a[],int r,int c)
{
int i,j;
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void printmatrix(int* a[],int r,int c)
{
int i,j;
for(i=0;i<r;i++)
{
printf("\n\n");
for(j=0;j<c;j++)
{
printf("%d\t",a[i][j]);
}
}
}
int main()
{
int* a;
int r,c,i,j;
scanf("%d%d",&r,&c);
a=(int *)malloc(r*c*sizeof(int));
scanmatrix(&a,r,c);
printmatrix(&a,r,c);
return(0);
}