读书人

用C语言怎么实现一个环状的缓冲?就是

发布时间: 2012-03-21 13:33:15 作者: rapoo

用C语言如何实现一个环状的缓冲?~!!!就是不断的检查一个数组里面的数据!!急求~~!
用C语言如何实现一个环状的缓冲?~!!!就是不断的检查一个数组里面的数据!!急求~~!

[解决办法]
看是不是你想要的?

C/C++ code
#include<stdio.h>#include<ctype.h>#define NMAX 8int 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':            printf("Please input a float number?");            scanf("%lf", &z);            put(z);            break;            case 'g':            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;} 

读书人网 >C语言

热点推荐