C语言实现循环buff,每次读取数据都是从写指针的位置往前推N个字节开始读取,详细如下描述?

C语言实现循环buff,每次读取数据都是从写指针的位置往前推N个字节开始读取,详细如下描述?,第1张

循环读取一个文件的内容。

这样做没有任何意义,不如把读取的内容保持在变量当中,节省空间时间。如果非要反复读取的话可以使用rewind函数把文件指针重置。

函数名: rewind()功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_SET)

循环读取多个文件的内容。

把多个文件名存在一个字符串数组当中。使用循环语句反复打开-读取-关闭即可。

例如:

char * s[3]={"文件一","文件二","文件三"}for(i=0i<3i++){    f=fopen(s[i]) //打开第i个文件   //读取数据    fclose(f)//关闭文件}   

C语言中buffer是缓冲区的意思。

不定义是不能拿过来直接用的,因为它肯定是在别的地方定义的,比如头文件,或者是个全局变量等。一般是在编译器里面,右键这个变量,选gotodifination就可以看到它在哪定义的了。

缓冲区它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。

扩展资料

C语言循环buffer的实现

#ifdefined(__CIRCLE_BUFFER__)

//"circle_buffer.h"

#ifndef__CIRCLE_BUFFER_H__

#define__CIRCLE_BUFFER_H__

#ifdefined(__CIRCLE_BUFFER__)

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<assert.h>

typedefunsignedcharcb_u8

typedefunsignedshortintcb_u16

typedefunsignedintcb_u32

typedefsignedcharcb_s8

typedefsignedshortintcb_s16

typedefsignedintcb_s32

typedefcharcb_char

typedefenum{cb_false,cb_true}cb_bool

typedefstruct{

cb_u8*bufptr

cb_u32buflen

cb_u32datalen

cb_u32readpos

cb_u32writepos

}CircleBufferMngr

typedefstruct{

void(*cb_init)(CircleBufferMngr**,cb_u32)

void(*cb_deinit)(CircleBufferMngr**)

void(*cb_info)(CircleBufferMngr*,cb_char*,cb_u32)

cb_u32(*cb_read)(CircleBufferMngr*,cb_u8*,cb_u32)

cb_u32(*cb_write)(CircleBufferMngr*,cb_u8*,cb_u32)

cb_u32(*cb_datalen)(CircleBufferMngr*)

cb_bool(*cb_full)(CircleBufferMngr*)

cb_bool(*cb_empty)(CircleBufferMngr*)

}CircleBufferApi

#defineCB_MEMCPYmemcpy

#defineCB_MEMSETmemset

#defineCB_SPRINTsprintf

#defineCB_MALLOCmalloc

#defineCB_MFREEfree

#defineCB_ASSERTassert

#defineCB_SNPRINTsnprintf

#defineCB_TRACEprintf

//锁定,禁止中断和任务调度

#defineCB_GLOBAL_LOCK

#defineCB_GLOBAL_UNLOCK

externconstCircleBufferApicircleBufApi

#defineCBMA_INITcircleBufApi.cb_init

#defineCBMA_DEINITcircleBufApi.cb_deinit

#defineCBMA_INFOcircleBufApi.cb_info

#defineCBMA_READcircleBufApi.cb_read

#defineCBMA_WRITEcircleBufApi.cb_write

#defineCBMA_DATALENcircleBufApi.cb_datalen

#defineCBMA_FULLcircleBufApi.cb_full

#defineCBMA_EMPTYcircleBufApi.cb_empty

#endif/*__CIRCLE_BUFFER__*/

#endif/*__CIRCLE_BUFFER_H__*/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11392259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存