倍精度で数値を格納したいが、ガベージ値を出力している。私はcallocにmallocを変更しようとしましたが、それでもゴミ値を得ました。なぜこれが起こっているのか誰も説明できますか?mallocでのガベージ値
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
double **mat1;
int i,j,k,size;
printf("Enter the matrix size");
scanf("%d",&size);
mat1 = (double**)malloc(size*sizeof(double*));
for(i=0;i<size;i++)
mat1[i]=(double*)malloc(size*sizeof(double));
if(mat1 != NULL) {
// Enter the input matrix
printf("\nEnter the elements of matrix\n");
for(i=0;i<size;i++){
for(j=0;j<size;j++)
scanf("%d",&mat1[i][j]);
}
//Printing Input Matrix
printf("\n Entered Matrix 1: \n");
for(i=0;i<size;i++){
for(j=0;j<size;j++)
printf("%d ",mat1[i][j]);
}
}
else {
printf("error");
}
}
'scanf'と' printf'に間違った指定子を使用しています。 '%d'は符号付き整数を対象としています。'%g'を試してください。 – Jack
また、mallocの戻り値をキャストするのは良い考えではありません。 C. – synchronizer
[mallocをキャストしない](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – Barmar