一个包孕20 行,每行30个整数的文件,想将其读到一个20 * 30 的数组中

一个包含20 行,每行30个整数的文件,想将其读到一个20 * 30 的数组中!
我写的这个程序,打印出来的是垃圾值,即使初始化,还是这样,什么原因啊? fread()这种用法不正确吗?

# include <stdio.h>
# include <stdlib.h>

int main (void)
{
FILE * fp;
int i, j, a[20][30] ;
if ((fp = fopen ("good.txt", "rb")) == NULL)
{
exit(2);
}
fread (a, sizeof (int), 600, fp);  
for (i = 0; i < 20; i++)
{
for (j = 0; j < 30; j++)
printf ("%d", a[i][j]);
putchar ('\n');
}
fclose (fp);
return 0;
}



------解决方案--------------------
肯定不行啊。。还是用fscanf读吧。。
你这样只是读了前2400个字节,数之间有一些空格什么的也会镀金来,而且数是以字符的形式存储的。。1234567就是7个字符,占7个字节,而不是4个字节的int。。
------解决方案--------------------
引用:
引用:肯定不行啊。。还是用fscanf读吧。。
你这样只是读了前2400个字节,数之间有一些空格什么的也会镀金来,而且数是以字符的形式存储的。。1234567就是7个字符,占7个字节,而不是4个字节的int。。
还是不太懂; 
我看的C Primer Plus
书上有这么例子: double earing[10];
        ……

文件中存的是数的二进制表示形式。。不是字符表示形式。。
你把几个数fwrite进一个文件再打开来看看就懂了。。