Why is it reading from the file randomly? ( this is in C ) : #include <stdio.h>

 
	void readMatrices(FILE*numbers, int array[4][4], int array2[4][4]) /*this puts the numbers fomr the file into two matrices*/
	{
    int i,j,num;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
        	fscanf(numbers,"%d",&array[i][j]);
 		}
    }
    for(i=0;i<=4;i++)
    {
        for(j=0;j<4;j++)
        {
        	fscanf(numbers,"%d",&array2[i][j]);
 		}
    }
	}
 
 
	void printMatrices(int array[4][4],int array2[4][4]) /* prints out the matrices*/
	{
    int i,j,num;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
        	printf("%d ",array[i][j]);
    	}
    	printf("\n");
        
    }
    printf("\n");
    for(i=0;i<=4;i++)
    {
        for(j=0;j<4;j++)
        {
        	printf("%d ",array2[i][j]);
    	}
    	printf("\n");
    } 
    printf("\n");
	}
 
 
	void multiplyMatrices(int array[4][4],int array2[4][4],int result[4][4]) /*multiplies the matrices*/
	{
	int i,j;
     for(i=0;i<4;i++)
     {
     	for(j=0;j<4;j++)
     	{
     		result[i][j] = (array[i][0]*array2[0][j])+(array[i][1]*array2[1][j])+(array[i][2]*array2[2][j])+(array[i][3]*array2[3][j]);
     		printf("%d ",result[i][j]);
		 }
		 printf("\n");
	 }
	 printf("\n");
	}

	int main()
	{
	int array[4][4],array2[4][4],results[4][4];
	FILE*numbers; 
	numbers = fopen("numbers.txt", "r");
	readMatrices(numbers,array,array2);
	while(array[0][0]!=0)
	{
		printMatrices(array,array2);
		multiplyMatrices(array,array2,results);
		readMatrices(numbers,array,array2);
	}
	fclose(numbers);
	return 0;
	
	}
https://www.dropbox.com/s/gcga78imj6139nz/numbers.txt?dl=0 
this is the file^^^
its reading the file but in random groups of fours rather than in order like it should be, this is an issue because its wrong ( lol ) and it also wont read the 0 in the file which causes it to loop infinitely.