/* TestMatToFile.c */

#include <stdio.h>
#define DataFile "MatrixDataFile2.txt"
int MatToFile(int*);

void main(void)
{
 int K,
  Mat[] = /*{404,  2,-1,3,5,  4,0,1,0,  9,-7,4,2,  11,-6,2,0}; */

  {808,  1,3,2,0,6,5,9,8,  2,1,9,4,3,8,7,5,  4,8,2,9,7,1,5,6,  3,5,8,1,9,0,2,7,
         9,3,7,4,2,5,1,8,  7,6,1,3,5,4,8,6,  5,2,7,1,3,8,9,4,  8,2,9,1,7,3,6,5};



 K = MatToFile(Mat);
 if (!K) puts("ERROR");


}

/****************************************************************************/

int MatToFile(int *P)     /* P -> linear matrix array */
{
 FILE *G;  char *Q,TITLE[]= DataFile,   Str[300];
 int H,J,K,M,N,MN,T,CNT;

 M=*P/100; N=*P%100;      MN=M*N;


 if ((G = fopen(TITLE,"a"))==NULL)
   {printf("cannot open file %s\n",DataFile); return 0;}

 Q=Str;

 *Q='['; Q++;  *Q='M'; Q++; *Q=','; Q++; *Q=' '; Q++;

  CNT=1;
 for (J=0; J<=MN; J++)
 {
  H=*P;
  if (!H) {*Q = '0'; Q++; goto NxtP;}
  if (H<0) {*Q='-'; Q++; H=-H;}
  T=1; while (T<=H) T*=10; T/=10;      
  while (T)
   {
   K = H/T + 48; *Q = (char)K;
    Q++;
    H%=T;   T/=10;
   }
NxtP:   
  P++;
  if (J<MN)
   {
   *Q=','; Q++;
    CNT--; if (!CNT) {*Q=' '; Q++; *Q=' '; Q++; CNT=N;}
   }
  } /* end J */
 *Q = ']';  Q++; *Q = '\0';
  fputs("\n ",G);
 fputs(Str,G); fclose(G);     puts(Str); getchar();
 return 100*M + N;
}



