?? ringbuf.c
字號:
/* ringbuf.c */
#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 + -