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

📄 iodisk.c

📁 语音CELP压缩解压源代码(C语音)
💻 C
字号:
/**************************************************************************** ROUTINE*               iodisk** FUNCTION*               16-bit disk i/o* SYNOPSIS*               function iodisk(mode, lun, fname, nrec, iar, size)**   formal **                       data    I/O*       name            type    type    function*       -------------------------------------------------------------------*	mode		int	i	defines operation*					-1 = close file*					 1 = read*					 2 = write*					 3 = open for read*					 4 = open for write*	lun		int	i	logical unit number*	fname		char	i	file name       *	nrec		int	i/o	direct access record pointer*					(auto increment)*	iar		short	i/o	i/o data record*	size		int	i	record size*	iodisk		int	fun	status*					 -1 => illegal input*					  0 => open/close OK*					size=> read/write OK****************************************************************************	* DESCRIPTION**	Uses the UNIX System's Low Level I/O routines (open, *	close, read and write).	****************************************************************************** CALLED BY**	celp** CALLS** **************************************************************************/#include <stdio.h>#include <sys/file.h>iodisk(mode, lun, fname, nrec, iar, size)int mode, *lun, *nrec, size;short *iar;char fname[];{  int i;  if ((mode == 1 || mode == 2) && *nrec < 0)  {    printf("iodisk: Bad direct access record number %d\n", *nrec);    return(-1);  }  switch (mode)  {    case 1: 					/* *read file		*/      (*nrec)++;				/* *Warning, read errors*/      if ((i = read(*lun, iar, size*2)) == EOF)	/* *aren't reported	*/       	return(i);				/* *except no. of items	*/      return(i/2);				/* *read is returned	*/          case 2:					/* *write file		*/      (*nrec)++;      if ((i = write(*lun, iar, size*2)) == EOF)      {        printf("iodisk: Error writing output file %s\n", fname);        return(i);      }      return(i/2);    case 3:					/* *open file for read	*/      if ((*lun = open(fname, O_RDONLY, 0644)) == NULL)      {        printf("iodisk: Error opening input file %s\n", fname);        return(-1);      }      return(0);    case 4:					/* *open file for write	*/      if ((*lun = open(fname,O_WRONLY|O_CREAT|O_TRUNC, 0644)) == NULL)      {        printf("iodisk: Error opening output file %s\n", fname);        return(-1);      }      return(0);    case -1:					/* *close file		*/      if (close(*lun) == EOF)      {        printf("iodisk: Error closing file %s\n", fname);        return(-1);      }      return(0);    default:					/* *illegal mode	*/      printf("iodisk: Illegal mode %d\n", mode);      return(-1);  }}

⌨️ 快捷键说明

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