首页 > 其他分享 >C语言实现一个简单的环回buffer

C语言实现一个简单的环回buffer

时间:2024-03-07 16:47:13浏览次数:23  
标签:cnt buffer CNT C语言 char 环回 int BUF out

#include <stdio.h>
#define  BUF_CNT  10
int in=0;
int out=0;
int cnt=0;
char buf[BUF_CNT]={0};

void data_buff_init()
{
	in = 0;
	out = 0;
	cnt = 0;
}

void data_in(char c)
{
	if(cnt>=BUF_CNT)
	{
		out++;
		if(out==BUF_CNT) out=0;
	}
	else
	{
		cnt++;
	}
	if(in>=BUF_CNT) in=0;
	buf[in] = c;
	in++;
}

char data_out()
{
	char c = 255;
	if(cnt>0)
	{
		if(out>=BUF_CNT) out=0;
		c = buf[out];
		out++;
		cnt--;
	}
	return c;
}

int main()
{
	char i = 0;
    data_buff_init();
	while(1)
	{
		for(i=0;i<20;i++)
			data_in(i);
		for(i=0;i<BUF_CNT;i++)
			printf("%02x\r\n", data_out()&0x00ff);
		break;
	}
}

标签:cnt,buffer,CNT,C语言,char,环回,int,BUF,out
From: https://www.cnblogs.com/zengfeng1013/p/18059234

相关文章

  • C语言趣味编程之借书方案知多少
    include<stdio.h>main(){inta,b,c=0,i=0;printf("A,B,C三人所选的书号分别为:\n");//标记书号来进行区别for(a=1;a<=5;a++)//三重限制,使用三次循环来进行彼此限制,一人每轮只拿一本for(b=1;b<=5;b++)for(c=1;c<=5&&a!=b;c++)//此处提前进行前两......
  • C语言趣味编程之百钱百鸡
    //一只公鸡值5钱,一只母鸡值3钱,三只小鸡值1钱,实现百钱百鸡//不等式;cock+hen+chicken=100,5cock+3hen+chicken/3.0=100//#include<stdio.h>//头文件//main()//主函数,有且仅有一个//{/利用三层循环加条件语句实现不等式方程组:cock+hen+chicken=100,5*cock+3*hen+chic......
  • C语言趣味编程之抓交通肇事犯
    include<stdio.h>main(){inti,j,k,temp;//i,j,k,分别表示前两位车牌号、后两位车牌号和车牌号,temp为验证是否车牌号为某个数的平方for(i=0;i<=9;i++)for(j=0;j<=9;j++)//通过两个for循环来列举前两位和后两位车牌号{if(i!=j)//判断前两个相同车牌号和后两个车牌号是......
  • c语言 推箱子小游戏二次开发
    内容来源:CSDN(额………………):https://blog.csdn.net/m0_71832999/article/details/128050830?ops_request_misc=&request_id=&biz_id=102&utm_term=c++推箱子小游戏&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-128050830.142v99pc_se......
  • 2252309------对飞机(航空)订票系统(C语言)进行逆向学习、分析、思考、设计构思、改进....
    **飞机订票系统**一、资料来源CSDN博主吴朋奉阅读量最高的一篇博文--飞机订票系统(C语言)----https://blog.csdn.net/weixin_47774641/article/details/111398063?spm=1001.2014.3001.5506二、运行环境Windows11+DEVC++三、源代码(来自博主吴朋奉)......
  • C语言基础-1、循环控制
    一、素数ex1:#include<stdio.h>intmain(){ intn; intflag=0;//标识符,0表示该数字是素数 scanf("%d",&n); inti=2; for(i;i<n;i++) { if(n%i==0) { flag=1; } } if(flag==0) { printf("%d是素数!\n",n); } else......
  • C语言扫雷游戏
    在给出的代码中,使用了以下库来实现游戏功能和图形界面:graphics.h:这是一个基于BGI(BorlandGraphicsInterface)库的图形库,用于创建图形窗口、绘制图形等操作。stdlib.h:这是C标准库中的一个头文件,提供了一些常用函数,例如srand()和rand()用于生成随机数,NULL用于表示空指针。time.h:......
  • 2020蓝桥杯c语言省赛B组
    2020蓝桥杯省赛B组1.回文日期考点枚举+翻转完整代码#include<bits/stdc++.h>usingnamespacestd;boolrn(intt){ if((t%4==0&&t%100!=0)||t%400==0)returntrue; returnfalse;}注意:是整体翻转不是年月日变成日月年!boolf(intn,inty,intr){inth=n*10000+......
  • c语言四则运算小程序
    本文源程序代码来源于csdn一位博主:文章链接:http://t.csdnimg.cn/L29fs原程序简洁凝练,以简短的代码写出了一个加法运算器。以下是运行结果(本文全程用visualstudio2022进行代码的编写与运算):通过对该代码的运算,我个人认为有以下问题:(1)尽管该代码简洁明了,但只有加法运算,缺少减......
  • C语言常用工具函数
    整数/*atf/include/lib/utils_def.h*//**Thisvariantofdiv_round_upcanbeusedinmacrodefinitionbutshouldnot*beusedinCcodeasthe`div`parameterisevaluatedtwice.*/#defineDIV_ROUND_UP_2EVAL(n,d) (((n)+(d)-1)/(d))#definedi......