文件I/0

基于ZYNQ7020芯片(黑金开发板AX7020)之AXI-FULL DDR的PL与PS交互操作。 在该工程中我们使用了PS端的串口接收功能,PS端串口接收和发送分别有一个64字节的FIFO,但是因为串口接收阈值设置为16,所以固定接收16个字节数据后才会发生中断。此测试工程得到以前知识的总结和各大网友的支持,只希望可以为学习的你更进一步,大家一起学习才是真的开心。加油,国产芯片之路。 阅读详情

    一个新的的或则一个存在的文件的流能够通过I/0流的fopen函数。这个fopen函数的取文件名,和打开模式作为参数,和返回对于这流的指针。

    FILE* fopen(const char* filename,const char* opentype);

    对于这个fopen函数的第二个参数,这个打开类型,是一个字符串控制文件怎样被打开。它应该是以下的打开类型之一:

      r:作为只读的打开一个存在的文件。

     w:打开一个只写的文件。如果这个文件已经存在,它被裁减为0长度。

     a:打开文件在附加模式。文件内容是被保存,和这新的输出附加到文件的末尾。如果文件存在,一个新文件被打开。

    r+:打开一个读写文件。

    w+:打开一个读写文件模式。如果这个文件已经存在,它被裁减为0长度。

   a+:打开这个文件读和附加。这文件初始化被设置到读的开始和附加文件的末尾。

   如果文件不能用需要的模式的不能被打开,这fopen函数返回一个NULL指针。这例子下,一个流指针,一个FILE指针,为和流的通信被返回,如下:

   #include <stdio.h>
...
FILE* stream = fopen("/data/data/com.example.hellojni/test.txt", "w");
if (NULL == stream)
{
/* File could not be opened for writing. */
}
else
{
/* Use the stream. */
/* Close the stream. */
}

写到流:

   Stream I/0提供是个函数来写到流。这个部分将简要的浏览这些函数。

   写块数据到流:

   这fwrite函数能够被用来写块的数据到流:

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

   fwite函数写移动数量的元素到给定的流。

   = fwrite(data, sizeof(char), count, stream))

写字符序列到流:

   没有终止符号的序列使用fputs函数写到一个流。

  int fputs(const char* data, FILE* stream);

  /* Writing character sequence to stream. */
if (EOF == fputs("hello\n", stream))
{
/* Error occured while writing to the stream. */
}

不能被写到流,fputs函数将返回EOF。

写一个单独字符到流:

  一个单独的字符或字节被写到一个流使用fputc函数:

  int fputc(int c, FILE* stream);

  如下:这个fputc函数去这单独的字符作为一个整形数和转化它到一个无符号的字符写到这个给定的流,命名的Stream。

   char c = 'c';
/* Writing a single character to stream. */
if (c ! = fputc(c, stream))
{
/* Error occured while writing character to string.
}

如果不能被写到流,fputs函数将返回EOF,否则将返回这字符自己。

写指定的格式的数据到流中:

   这个fprintf函数能够被用来格式化和输出变量的参数的的数量到给定的流.

   int fprintf(FILE* stream,const char* format,...);

   它去一个指针到流,这个格式化字符串,和参数的的变量数目用指定的格式被引用。这个格式字符串有普通的字符串的和 指定格式。普通的格式字符被传递不能改到流。指定格式引发这个fprintf函数到个格式和写这给定的参数到流。这最频繁使用的自定符如下:

    %d,%i:整形参数。%u:无符号。%o:无符号的octal。等

  /* Writes the formatted data. */
if (0 > fprintf(stream, "The %s is %d.", "number", 2))
{
/* Error occurred while writing formatted data. */
}

I/o流提供这个fflush函数使应用程序到自动刷新缓存区被需要。

int fflush(FILE* stream);

如下,这个ffluse函数采用流指针和刷新输出缓存区的。

   char data[] = { 'h', 'e', 'l', 'l', 'o', '\n' };
size_t count = sizeof(data) / sizeof(data[0]);
/* Write data to stream. */
fwrite(data, sizeof(char), count, stream);
/* Flush the output buffer. */
if (EOF == fflush(stream))
{
/* Error occured while flushing the buffer. */
}

从流中读:

   和写相似,I/0提供了四个函数读从流中。

  从流中读块的数据

 这fread函数能够被用来读块数据从这个流。

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

例如:

  char buffer[5];
size_t count = 4;
/* Read 4 characters from the stream. */
if (count ! = fread(buffer, sizeof(char), count, stream))
{
/* Error occured while reading from the stream. */
}
else
{
/* Null terminate. */
buffer[4] = NULL;
/* Output buffer. */
MY_LOG_INFO("read: %s", buffer);
}

在这个例子,返回的元素数量被传递给的值得数量相等。

读字符序列从流中:

  这个fgets函数被用来读一个换行终止符号的字符字符串来自给定的流。

  char* fgets(char* buffer,int count,FILE* stream);

这个fgets函数读最多count-1个字符和包含这个换行符在字符数组从给定的命名流中。

char buffer[1024];
/* Read newline terminated character sequence from the stream. */
if (NULL == fgets(buffer, 1024, stream))
{
/* Error occured while reading the stream. */
}
else
{
MY_LOG_INFO("read: %s", buffer);


读单个字符:

unsigned char ch;
int result;
/* Read a single character from the stream. */
result = fgetc(stream);
if (EOF == result)
{
/* Error occured while reading from the stream. */
}
else
{
/* Get the actual character. */
ch = (unsigned char) result;
}
If end-of-file indicator for the stream is set, it returns EOF

读指定格式的字符:

char s[5];
int i;
/* Stream has "The number is 2" */
/* Reads the formatted data. */
if (2 ! = fscanf(stream, "The %s is %d", s, &i))
{
/* Error occured while reading formatted data. */
}

检查文件的末尾:

当从一个流中读时,这个feof的函数被用来检查如果文件结束指定符对于流被设定。

  int feof(FILE* stream);

char buffer[1024];
/* Until the end of the file. */
while (0 == feof(stream))
{
/* Read and output string. */
fgets(buffer, 1024, stream);
MY_LOG_INFO("read: %s", buffer);

fseek函数:

fseek函数使用流指针,这个相似的offset,和这作为这引用点:

   SEEK_SET:流的开始。

   SEEK_CUR:现在的位置

  SEEK_END:流的结束。

  例子代码如下,写4个字符,重定位返回流的4个字节和重写他们使用一个不同的字符。/* Write to the stream. */
fputs("abcd", stream);
/* Rewind for 4 bytes. */
fseek(stream, -4, SEEK_CUR);
/* Overwrite abcd with efgh. */
fputs("efgh", stream);

错误检测在这个例子代码中被忽略。这个fseek函数将返回0,如果这个操作室成功了;否则一个非零的值指示了失败。

检测错误:

   大部分的I/0流函数将返回EOF来指示错误和报告文件末尾。这个ferror函数能够被用来检测如果一个错误被发生了在上一个操作中。

  int ferror(FILE* stream);


/* Check for the errors. */
if (0 ! = ferror(stream))
{
/* Error occured on the previous request. */
}

关闭流:

  流可以被关闭使用fclose函数。任何缓存的输出被写到流,和任何缓存的输入被抛弃的。

int fclose(FILE* stream);


if (0 ! = fclose(stream))
{
/* Error occured while closing the stream. */
}

这个错误指示这缓存的输出不能写到流中因为在磁盘上没有足够的空间。很好的习惯来检测fclose函数的返回值。

大数据知识面试题-Hadoop(2022版) 序列号 内容 链接 1 大数据知识面试题-通用(2022版) 待续… 2 大数据知识面试题-Hadoop(2022版) 待续… 3 大数据知识面试题-MapReduce和yarn(2022版) 待续… 4 大数据知识面试题-Zookeepr (2022版) 待续… 5 大数据知识面试题-Hive (2022版) 待续… 6 大数据知识面试题-Flume(2022版) 待续… 7 大数据知识面试题-Hbase(2022版) 待续… 8 大数据知识面试题-sqoop(.... 阅读详情

相关推荐

2024年全国大学生信息安全竞赛安徽省赛网络系统建设与运维赛项-网络构建真题

该网络工程方案主要包含基础配置、有线网络、无线网络、出口网络、运维配置和SDN网络六个部分。基础配置包括设备接口设置、SSH服务开启和SNMP功能配置。有线网络部分重点部署VLAN、MSTP、VRRP和OSPF协议,实现网络冗余和负载均衡。无线网络规划了AP点位、信号覆盖和用户接入策略,包括SSID配置、频段优化和安全认证。出口网络配置了NAT转换、VPN隧道和流量审计功能。运维方面搭建了监控平台实时监测设备状态。SDN网络部分通过控制器实现流量管控。整个方案实现了多业务隔离、高可用性网络架构和

weixin_42221934的博客 1174

fwrite函数的用法

fwrite函数的用法

qq_33300585的博客 4万+

Selenium自动化测试遇到shadow-root元素?3种实用解决方案帮你搞定

本文针对Selenium自动化测试中遇到shadow-root元素难以定位的常见问题,提供了三种实用的解决方案。详细阐述了通过JavaScript直接穿透Shadow DOM、利用浏览器工具快速获取JS Path以及使用Python第三方库进行优雅封装的方法,并分享了提升脚本健壮性的实战策略与最佳实践,帮助测试人员有效应对现代Web组件化开发带来的挑战。

code8的博客 408

有关fwrite语句的用法

一:函数名: fwrite   功 能: 写内容到流中   用 法:fwrite(buffer,size,count,fp);   (1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。   (2)size:要写入的字节数;   (3)count:要进行写入size字节的数据项的个数;   (4)fp:目标文件指针。   程序例: #include std

轻锋的专栏 6354

用电脑通过网口控制keysight示波器

Keysight HD304MSO示波器提供1GHz带宽、14位高精度ADC及10.1英寸触控屏,支持50μV低噪声信号捕获和1.3M波形/秒刷新率。配备4通道探头、逻辑分析仪接口及100Mpts存储深度,含故障诊断、FFT等高级功能。通过网线连接电脑安装TightVNC软件(示波器IP为169.254.163.24)可实现远程控制,相比U盘传输更高效。(149字)

johnboat的专栏 1136

【Oracle数据库】Oracle11g数据库下载与安装教程(超详细安装图解)

Oracle11g是Oracle公司出的一个比较轻量版的数据库,这里重点说一下在window系统上如何安装Oracle11g, Oracle11g是很早之前的安装包,win7 系统安装时不会遇到环境不满足最低要求的提示,win11系统安装时会提醒环境不满足,修改配置文件即可(注意:先安装oracle服务端/oracle客户端,再安装第三方工具(PL/ SQL Developer,DBeaver等)服务器端环境概述:ORACLE数据库版本:Oracle 11g 64位(11.2.0)

qq_34463511的博客 1万+

fwite写入文件

用双引号(")定义字符串,PHP 懂得更多特殊字符的转义序列: 转移序列 说明 \n 换行 \r 回车 \t 水平制表符 \[/td> 反斜线 \$ 美元符号 \" 双引号 \[0-7]{1,3} 此正则表达式序列匹配一个用八进制符号表示的字符 \x[0-9A-Fa-f]{1,2} ...

weixin_30640769的博客 267

微信小程序逆向实战:从HTTPS抓包到API接口全解构

方案原理优点缺点方案一:使用低版本微信+系统代理微信7.0以下版本未强制不走代理操作简单容易被封号,无法使用新版小程序方案二:Hook SSL层(Xposed/Frida)动态Hook Java的TrustManager或系统的SSLContext,绕过证书校验灵活可控需要Root/越狱,技术门槛高方案三:VPN转发抓包(PacketCapture)利用Android VPNService将所有流量转发到本地代理无需Root,兼容性好部分机型存在性能问题。

2201_76125261的博客 267

fopen,open,fwrite,write,fread,read区别

在写驱动程序和应用程序时,经常看到,有些时候用fread,read, fwite,wirte,是啥原因呢? linux系统对文件的操作有带缓存的IO操作和不带缓存的IO操作。 带缓存的函数: fwrite,fopen,fclose,fwrite,fread 这里的带缓存指在用户层带缓存,在内核也是带缓存的,内核是有缓存器的,只是用户看不到而已。带缓存IO也叫标准IO,符合ANSI C 的标

ucas_123的博客 596

ubuntu20.04搭建QGC4.2编译环境

QGC 4.2ubuntu18.04也可以编译QGC4.2,但是由于GLBC版本较低,无法使用最新版的QTCreator,Ubuntu20.04可以使用最新版QTCreator。

超维空间科技的博客 1万+

【DDR3 控制器设计】(1)MIG IP 核的详解与配置

2:1 比例的用户接口数据总线宽度是 MIG 内存接口宽度的 4 倍,比如 MIG 中配置的数据位宽是 16 位,而 DDR 双边采样,所以用户接口是 MIG 内存接口的 4 倍即数据位宽为 64 位,同理可以得到如果设置为 4:1 则是 8 倍的数据位宽即数据位宽为 128 位。这里选择不使用OFF。以下为 MIG 和 DDR 之间的连接框图,可以看到框图的左边是用户接口,中间是 MIG 核,右边是需要控制的 DDR 接口,用户只需要去配置使用 MIG 核,就可以对 DDR 进行控制读写等操作。

记录学习历程 5359

【C 语言】文件操作 ( fwrite 函数 )

一、fwrite 函数、 二、fwrite 示例、 三、fwrite 示例 ( 写出数据超出实际有效值 )、 四、fwrite 示例 ( 输出 int 整型到二进制文件中 )、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 8万+

高频仿真:高频天线设计_(4).天线参数分析与优化

通过上述步骤,我们展示了如何综合使用解析方法、数值优化方法和实验数据来设计和优化一个高效宽带天线。首先,我们通过解析方法确定了天线的初步长度;然后,使用遗传算法优化了天线的直径以最大化增益;最后,通过实验数据验证了天线的性能,包括驻波比和带宽。这一综合性方法可以有效地提升天线的设计和优化效果,确保其在实际应用中表现出色。

2401_87715305的博客 923

Linux 文件I/0

经过×××年的工作,经常使用的一些I/O(很重要,因为Linu一切皆文件)函数,以后用到可以查看下。这段时间不是很忙,仅仅为了做个笔记整理一下。文件I/O和标准I/O库有的区别:1)文件I/O是系统调用,标准I/O库是封装了系统调用的函数库;2)文件I/O操作的是文件描述符(内核返回,是一个非负整数,其中0,1,2代表标准输入,标准输出,标准错误),标准I/O...

bdjt3678的博客 210

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

对文件I/0缓冲的认识

1.文件I/O的内核缓冲或许很多初学文件I/O时会认为read()或write()系统调用会直接对磁盘中的文件发起访问,其实不然,此俩个调用只会使用户空间缓冲区与内核的高速缓冲区之间复制数据。write(fd,"12345"); 例如上述操作,当write返回后,在之后的某个时刻内核会将该数据写入(刷新至)磁盘(所以系统调用其实并不与磁盘同步)如果在此期间,另一个程序试图读取这些字节,将会直接存内核

Shreck66的专栏 1722

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

linux .i文件,Linux 文件I/0

经过×××年的工作,经常使用的一些I/O(很重要,因为Linu一切皆文件)函数,以后用到可以查看下。这段时间不是很忙,仅仅为了做个笔记整理一下。文件I/O和标准I/O库有的区别:1)文件I/O是系统调用,标准I/O库是封装了系统调用的函数库;2)文件I/O操作的是文件描述符(内核返回,是一个非负整数,其中0,1,2代表标准输入,标准输出,标准错误),标准I/O操作的是流即就是FILE对象;因此可见...

weixin_31926457的博客 519

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文件I/0缓冲

设置stdio流缓冲模式 #include<stdio.h> int setvbuf(FILE *stream,char *buf,int mode,size_t size) int setbuf(FILE *stream,char *buf)//该函数不返回函数结果 int setbuffer(FILE *stream,char *buf,size_t s...

weixin_33901843的博客 95

0_7 标准I/O、文件I/O

C #include &amp;amp;amp;amp;amp;amp;amp;quot;hjcommon.hpp&amp;amp;amp;amp;amp;amp;amp;quot; #include &amp;amp;amp;amp;amp;amp;amp;quot;unistd.h&amp;amp;amp;amp;amp;amp;amp;quot; HJ_NS_BEGIN bool isFileExists(const char *path) { r

huanghuangjin的博客 514

python文件I/0总结

1、输出:print() 2、输入:input()、raw_input() 括号里面是显示在屏幕上的的提示性内容,如: input("please input:") raw_input("please input:")3、文件的打开,open函数,格式如下 oj=open('filename','accessmode',buffering) 第一个参数是文件名,如果添加到源码所在路

your_answer的博客 532

基础知识(一) 标准I/O和文件I/0

一、定义: 标准I/O是一个标准I/O模型,它处理了很多细节,比如:缓存分配,以及优化长度执行I/O等。标准的I/O提供了三种类型的缓存。 (1)全缓存:当填满标准I/O缓存后才进行实际的I/O操作。 (2)行缓存:当输入或输出中遇到新行符时,标准I/O库执行I/O操作。 (3)不带缓存:stderr就是了。 文件I/O: 是不带缓冲区的I/O,意思是每个read,write都会调用内核的一个系统调用。也就是常说的低级I/O----操作系统提供的基本IO服务。 二、经常使用...

qq_34062754的博客 655

php 上传文件 io错误,DISCUZ 7.0文件上传过程中出现I/O错误!

如果你的论坛已经打上补丁,但上传头像是仍然出现出现I/O错误解决办法:在网站根目录新建一个 .htaccess 文件内容:SecFilterEngineOffSecFilterScanPOSTOff搜了好几天帖子终于解决了 感谢楼主的文件虽然每个人的情况可能不同还是说一下我最后解决的方法将把楼主提供的 .htaccess传到uchome目录下可以解决问题 放到网站的根目录下就可以了论坛之前使用...

weixin_29871897的博客 190

上传附件显示服务器i o错误,DISCUZ 7.0文件上传过程中出现I/O错误!

关键字描述:出现 错误 过程 上传 文件 目录 图片 &nbsp 问题 头像如果你的论坛已经打上补丁,但上传头像是仍然出现出现I/O错误解决办法:在网站根目录新建一个 .htaccess 文件内容:SecFilterEngine OffSecFilterScanPOST Off搜了好几天帖子终于解决了 感谢楼主的文件虽然每个人的情况可能不同还是说一下我最后解决的方法将把楼主提供的 .hta...

weixin_42669344的博客 605

python0o12_Python文件的I/o

Python 文件I/O本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档。打印到屏幕最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:#!/usr/bin/python# -*- coding: UTF-8 -*-print "Python 是一个非常棒的语言,不是吗?";你的...

weixin_39557199的博客 215

python 之 文件I/0

打开和关闭文件 open()函数 必须要open()内置函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。 语法 file object=open(file_name [,access_mode] [,buffering])file_name:变量是一个包含了你要访问的文件名称的字符串值access_mode:决定了打开文件的模式:只读,写入,追加等,默...

weixin_30871293的博客 75

libaio-0.3.105-i386资源文件介绍:提高I/O性能的利器,适用于i386架构

libaio-0.3.105-i386资源文件介绍:提高I/O性能的利器,适用于i386架构 【下载地址】libaio-0.3.105-i386资源文件介绍 libaio-0.3.105-i386是一个专为i386架构系统设计的Linux异步I/O操作库,旨在提升应用程序的I/O性能,减少CPU等待时间。通过异步I/O技...

gitblog_06799的博客 614
上一篇: API内存操作
下一篇: 进程的交互
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值