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

📄 环形缓冲.cpp

📁 在通信程序中
💻 CPP
字号:
#include<stdio.h>
#include<ctype.h>
#define NMAX 8
int iput = 0; /* 环形缓冲区的当前放人位置 */
int iget = 0; /* 缓冲区的当前取出位置 */
int n = 0; /* 环形缓冲区中的元素总数量 */
double buffer[NMAX]; 

/* 环形缓冲区的地址编号计算函数,,如果到达唤醒缓冲区的尾部,将绕回到头部。

环形缓冲区的有效地址编号为:0到(NMAX-1)

*/

int addring (int i)
{
  return (i+1) == NMAX ? 0 : i+1;
}
/* 从环形缓冲区中取一个元素 */
double get(void)
{
int pos;
if (n>0)
{
  pos = iget;
  iget = addring(iget);
  n--;
  return buffer[pos];
}

else
{
printf("Buffer is empty\n");
}
return 0.0;
}

/* 向环形缓冲区中放人一个元素*/
void put(double z)
{
if (n<NMAX)
{
   buffer[iput]=z;
   iput = addring(iput);
   n++;
}
else
printf("Buffer is full\n");
}

int main(void)
{
char opera[5];
double z;
do {
printf("Please input p|g|e?");
scanf("%s", &opera);
switch(tolower(opera[0]))
{

      case 'p': /* put */
      printf("Please input a float number?");
      scanf("%lf", &z);
      put(z);
      break;
      case 'g': /* get */
      z = get();
	  printf("%8.2f from Buffer\n", z);
	  break;
      case 'e':
      printf("End\n");
      break;

default:
     printf("%s - Operation command error! \n", opera);
}/* end switch */
}while(opera[0] != 'e');
return 0;
}

⌨️ 快捷键说明

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