readmfs.c

来自「NIST Handwriting OCR Testbed」· C语言 代码 · 共 90 行

C
90
字号
/*# proc: readmfsfile - reads the contents of the specified file into a# proc:               new mfs structure.# proc: readmfsint2 -  reads MFS file containing 2 integers strings per value# proc:                from the specified file and returns them in 2 separate# proc:                lists of integers.# proc: readintmfs - reads MFS values containing integers strings from the# proc:              specified file and converts them into a list of integers.*/#include <stdio.h>#include <string.h>#include <sys/param.h>#include <mfs.h>/*******************************************************************/MFS *readmfsfile(file)char *file;{  MFS *mfsptr = NULL;  FILE *mfs = NULL;  int feature_number = 0;  int ac;  char line[MAXMFSLENGTH],**value;  mfs = fopen(file,"rb");  if (mfs == NULL)     syserr("readmfsfile","fopen",file);  if (fgets(line,MAXMFSLENGTH-1,mfs) == (char *)NULL)      syserr("readmfsfile","fgets",NULL);  if (sscanf(line,"%d",&ac) != 1)     syserr("readmfsfile","sscanf","ac");  if (ac <1)     fatalerr("readmfsfile",file,"count less then 1");  malloc_dbl_char_l1(&value, ac, "readmfsfile : values");  for (feature_number = 0;feature_number<ac; feature_number+=1)      {         if(fgets(line, sizeof(line),mfs) == NULL)            fatalerr("readmfsfile",file,"EOF unexpected");         line[strlen(line)-1] = '\0';         value[feature_number] = strdup(line);         if(value[feature_number] == NULL)            syserr("readmfsfile","strdup","value[]");      }  fclose(mfs);  if ((mfsptr = (MFS *)malloc(sizeof(MFS))) == NULL)     syserr("readmfsfile","malloc","mfsptr");  mfsptr->alloc = ac;  mfsptr->num = ac;  mfsptr->values = value;  return(mfsptr);}/*******************************************************************/readmfsint2(pfile, xref, yref, nref)char *pfile;int **xref, **yref, *nref;{   MFS *mfs;   mfs = readmfsfile(pfile);   mfs2int2(mfs, xref, yref);   *nref = mfs->num;   freemfs(mfs);}/*******************************************************************//* readintmfs by Patrick Grother Aug 28 1992 */readintmfs(mfsfile, num, optr)char  *mfsfile;int   *num;int **optr;{MFS    *mfs;int    i;int  *tptr;   mfs = readmfsfile(mfsfile);   (*num) = mfs->num;   malloc_int(optr, *num, "readintmfs : optr");   tptr = (*optr);   for ( i = 0 ; i < (*num) ; i++)     sscanf(mfs->values[i], "%d", tptr++);   freemfs(mfs);}

⌨️ 快捷键说明

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