fread()のやりかたで結構うまくいっているのですが
データがずれて読み込まれています...。
(ああ、明日までに終わるか)

for (i=0 ; i < t ; i++){

buf[40 * 5] = '\0'; // 末尾に車止め
for (j=0; j < 128 ; j++ ){
fread(buf, sizeof(char), 40*5, fp1); // 5桁が40個
for (k = 0; k < 40; k++){
x[i][j][k] = atoi(&buf[k*5]);
dummy = x[i][j][k];
if( dummy > 0 ){
printf("%d %d %d\n",j,k,dummy);
}
}

}
}