当前位置:网站首页 > R语言数据分析 > 正文

bytebuffer写入文件(bytebuffer.slice)



目录

1。顺序读写函数

1.1 fputs

1.2fgets

 1.3fprintf

1,4fscanf

1.5 sprintf

1.6 sscanf 

 1.7 fwrite

1.8 fread

2 ⽂件的随机读写

2.1 fseek

2.2 ftell

2.3 rewind

3 . ⽂件读取结束的判定

3.1 被错误使⽤的 feof

拷贝文件

 ferror 

4.⽂件缓冲区


书接下文上次我讲到

 
   

当你运行完后依照昨天的步骤找到要写入的文件打开出查看

记事本中实现了。

 
   

 

在先了fprint 的时候我们来了解一些它与printf的区别。

 

 我们发现fprintf和printf只相差一个流 ,下面用代码来解释

 
   

 

 我们可以发现这个与上面的printf 和fprintf 相似,

 
   

 

 
   

结构体的内容放到了arr中

 
   

 打印结果

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

 

当我们查看的时候就会出现错误的编码,因为这是二进制形式写到文件中

 这个时候我们就得讲下个函数了fread 

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

 可以发现fwrite 和fread 的参数是相同的。

 
   

 我们发现这个代码真的打印出来

根据⽂件指针的位置和偏移量来定位⽂件指针(⽂件内容的光标)

int fseek ( FILE * stream, long int offset, int origin );=

 
   

 

 前两个就打印出来了,

返回⽂件指针相对于起始位置的偏移量

long int ftell ( FILE * stream );

 
   

 记事本中存放了5个字符,那么我们打印看一看结果。

 

 如果我在记事本中增加字母,那么打印出来的数字也会随着增加。下面我们来实现一下。

 

 这里就会增加。

让⽂件指针的位置回到⽂件的起始位置

回到了起始位 

 
   

牢记:在⽂件读取过程中,不能⽤feof函数的返回值直接来判断⽂件的是否结束。 feof 的作⽤是:当⽂件读取结束的时候,判断是读取结束的原因是否是:遇到⽂件尾结束

1. ⽂本⽂件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets)、fgetc 判断是否为 EOF .

• fgets 判断返回值是否为 NULL .

2. ⼆进制⽂件的读取结束判断,判断返回值是否⼩于实际要读的个数。

• fread判断返回值是否⼩于实际要读的个数。

拷贝文件

将text 1 拷贝到text2 中

下面请看代码:

 
   

有了前面的理解,相信大家看这个这些代码应该都不陌生了。 

 
   
 ferror 

ferror 要这样使用

ANSIC 标准采⽤“缓冲⽂件系统” 处理的数据⽂件的,所谓缓冲⽂件系统是指系统⾃动地在内存中为 程序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓 冲区,装满缓冲区后才⼀起送到磁盘上。如果从磁盘向计算机读⼊数据,则从磁盘⽂件中读取数据输 ⼊到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓 冲区的⼤⼩根据C编译系统决定的。

 大家有兴趣的可以研究一下这个代码

 #include <stdio.h>
#include <windows.h>
//VS2022 WIN11环境测试
int main()
{
    FILE* pf = fopen("test.txt", "w");
    fputs("abcdef", pf);//先将代码放在输出缓冲区
    printf("睡眠10秒-已经写数据了,打开test.txt⽂件,发现⽂件没有内容 ");
    Sleep(10000);
    printf("刷新缓冲区 ");
    fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到⽂件(磁盘)
    //注:fflush 在⾼版本的VS上不能使⽤了
    printf("再睡眠10秒-此时,再次打开test.txt⽂件,⽂件有内容了 ");
    Sleep(10000);
    fclose(pf);
    //注:fclose在关闭⽂件的时候,也会刷新缓冲区
    pf = NULL;
    return 0;
}

















 到这里文件就结束了。我们的c语言也接近尾声了,

到此这篇bytebuffer写入文件(bytebuffer.slice)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • hp-prrsv怎么读(hpc怎么读)2026-02-08 16:27:07
  • cruise软件教程(cruise软件实例教学)2026-02-08 16:27:07
  • strace工具(systrace工具)2026-02-08 16:27:07
  • stlmap详解(strtomap)2026-02-08 16:27:07
  • 连接到redis失败(redis连接超时该如何解决)2026-02-08 16:27:07
  • uchar和char的区别(char和uint8的区别)2026-02-08 16:27:07
  • trace尿蛋白(trace尿蛋白和尿潜血2+)2026-02-08 16:27:07
  • spring简单入门实例(简单说一下spring)2026-02-08 16:27:07
  • tr111协议(tr181协议)2026-02-08 16:27:07
  • hrnetone属于什么档次(hernegnes是什么牌子)2026-02-08 16:27:07
  • 全屏图片