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

📄 strarr.c

📁 实现HMM算法
💻 C
字号:
/* ----------------------------------------------------------- *//*                                                             *//*                          ___                                *//*                       |_| | |_/   SPEECH                    *//*                       | | | | \   RECOGNITION               *//*                       =========   SOFTWARE                  *//*                                                             *//*                                                             *//* ----------------------------------------------------------- *//*         Copyright: Microsoft Corporation                    *//*          1995-2000 Redmond, Washington USA                  *//*                    http://www.microsoft.com                 *//*                                                             *//*   Use of this software is governed by a License Agreement   *//*    ** See the file License for the Conditions of Use  **    *//*    **     This banner notice must not be removed      **    *//*                                                             *//* ----------------------------------------------------------- */#include <malloc.h>#include "esignal.h"#include "strarr.h"/* * "dim" should point to the dimensions of a char matrix. * "data" should point to the matrix data, stored in row-major order. * Each row is assumed to be terminated by one or more null characters. * This function converts the matrix to a NULL-terminated array of * strings---one per row of the matrix---and returns a pointer to the * result. */char **StrArrFromRect(long *dim, void *data){   char **strarr;   long len, wid, i;   char *row;   len = dim[0];   strarr = (char **)malloc((len + 1) * sizeof(char *));   wid = dim[1];   row = (char *) data;   for (i = 0; i < len; i++)      {         /* Assumption: each row has at least 1 terminating null */         strarr[i] = StrDup(row);         row += wid;      }   strarr[len] = NULL;   return strarr;}/* * "strarr" should point to the beginning of a NULL-terminated string array. * "dimenp" and "datap" are output variables.  If not NULL, they should * be the addresses of variables to which results will be assigned. * The function converts the data in the string array to a character matrix, * stored in row-major order.  Each row receives the contents of one string * padded with null characters to bring them all up to a common length; * every row gets at least one terminal null.  A pointer to the dimensions * is returned via "dimenp".  A pointer to the matrix data is returned via * "datap". */voidStrArrToRect(char **strarr, long **dimenp, void **datap){   long len, wid, *dim, siz;   void *data;   long i, j;   char *str, *row;   len = StrArrLen(strarr);   wid = StrArrMaxLen(strarr) + 1;   dim = (long *) malloc(2 * sizeof(long));   dim[0] = len;   dim[1] = wid;   siz = len * wid;   data = malloc(siz * sizeof(char));   row = (char *) data;   for (i = 0; i < len; i++)      {         str = strarr[i];         for (j = 0; str[j] != '\0'; j++)            row[j] = str[j];         for ( ; j < wid; j++)            row[j] = '\0';         row += wid;      }   if (dimenp)      *dimenp = dim;   if (datap)      *datap = data;}/* * Number of strings in a NULL-terminated string array. */intStrArrLen(char **str_arr){   int i = 0;   if ((str_arr == NULL) || (*str_arr == NULL))      return 0;   while (str_arr[i] != NULL)       i++;   return(i);}/* * Maximum strlen for the members of a NULL-terminated string array. */intStrArrMaxLen(char **str_arr){   int maxlen = 0;   int newmax;   if (str_arr == NULL)      return(0);     while (*str_arr != NULL) {      if ((newmax = strlen(*str_arr)) > maxlen)         maxlen = newmax;      str_arr++;   }   return(maxlen);}

⌨️ 快捷键说明

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