⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dce_matrix.c

📁 Ho Chi Minh City University of Technology Computer Science Department Distributed Computing E
💻 C
字号:
/***************************************Ho Chi Minh City University of Technology    Computer Science Department Distributed Computing Environment (DCE)Written by Nguyen Van Noi -59406114File dce_matrix.c on Tue Nov 17 18:31:12 1998****************************************/#include <stdio.h>#include "dcec.h"int readn (register int, register char *, register);int writen (register int, register char *, register);pmatrixinitmatrix (int type, int row, int col, void **ppvoid, mf_t f){  int i, j;  pmatrix pm = (pmatrix) malloc (sizeof (matrix));  if (!pm)    return NULL;  pm->type = type;  pm->row = row;  pm->col = col;  pm->_ppvoid = ppvoid;  if (f)    {      for (i = 0; i < row; i++)	for (j = 0; j < col; j++)	  f (pm, i, j);    }  return pm;}pmatrixnewmatrix (int type, int row, int col, mf_t f){  int i, j;  pmatrix pm = (pmatrix) malloc (sizeof (matrix));  if (!pm)    return NULL;  pm->type = type;  pm->row = row;  pm->col = col;  pm->_ppvoid = NULL;  if (!(pm->_ppvoid = (void **) malloc (sizeof (void *) * row)))    {      free (pm);      return NULL;    }  for (i = 0; i < row; i++)    pm->_ppvoid[i] = NULL;  for (i = 0; i < row; i++)    if (!(pm->_ppvoid[i] = (void *) malloc (type * col)))      {	freematrix (pm);	return NULL;      }  if (f)    {      for (i = 0; i < pm->row; i++)	for (j = 0; j < pm->col; j++)	  f (pm, i, j);    }  return pm;}voidfreematrix (pmatrix pm){  int i;  if (pm->_ppvoid)    {      for (i = 0; i < pm->row; i++)	if (pm->_ppvoid[i])	  free (pm->_ppvoid[i]);    }  free (pm);}intwritematrix (int fd, pmatrix pm){  int i;  if (writen (fd, (char *) &(pm->type), sizeof (pm->type)) < 0)    return -1;  if (writen (fd, (char *) &(pm->row), sizeof (pm->row)) < 0)    return -1;  if (writen (fd, (char *) &(pm->col), sizeof (pm->col)) < 0)    return -1;  for (i = 0; i < pm->row; i++)    if (writen (fd, (char *) (pm->_ppvoid[i]), pm->type * pm->col) < 0)      return -1;  return pm->row * pm->col;}pmatrixreadmatrix (int fd){  int i, type, row, col;  pmatrix pm;  if (readn (fd, (char *) &type, sizeof (type)) < 0)    return NULL;  if (readn (fd, (char *) &row, sizeof (row)) < 0)    return NULL;  if (readn (fd, (char *) &col, sizeof (col)) < 0)    return NULL;  if (!(pm = newmatrix (type, row, col, NULL)))    return NULL;  for (i = 0; i < row; i++)    if (readn (fd, (char *) (pm->_ppvoid[i]), type * col) < 0)      {	freematrix (pm);	return NULL;      }  return pm;}voidprintmatrix (pmatrix pm, FILE * fo, mf_t fm){  int i, j;  FILE *f = (fo) ? fo : stderr;  fprintf (f, "\nSize of 1 element : %d bytes.Dim : %d row %d col\n", pm->type, pm->row, pm->col);  for (i = 0; i < pm->row; i++)    {      for (j = 0; j < pm->col; j++)	if (fm)	  fm (pm, i, j);      fprintf (f, "\n");    }}intreadn (register int fd, register char *ptr, register nbytes){  int nread, nleft = nbytes;  while (nleft > 0)    {      nread = read (fd, ptr, nleft);      if (nread < 0)	return nread;      else if (nread == 0)	break;      nleft -= nread;      ptr += nread;    }  return nbytes - nleft;}intwriten (register int fd, register char *ptr, register nbytes){  int nwritten, nleft = nbytes;  while (nleft > 0)    {      nwritten = write (fd, ptr, nleft);      if (nwritten <= 0)	return nwritten;      nleft -= nwritten;      ptr += nwritten;    }  return nbytes - nleft;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -