<c和指针>学习笔记6输入输出函数
1 错误报告
(1)perror函数
void perror(char const *message)
error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户程序,表示操作系统的准确原因。
(2)终止执行
void exit(int status)
status参数返回给操作系统,用于提示程序是否完成。预定义中EXIT_SUCCESS和EXIT_FAILURE分别提示程序的终止是成功还是失败。
2 流
绝大数流是完全缓冲的,这意味着读取和写入实际上都是从一块被称为缓冲区的内存区域来回复制数据。,用于输出流的时候写满了才会被刷新到设备或者文件中。
(1) 文本流
文本流有些特性在不同的系统中可能不同。其中之一是文本行的最长长度。标准规定至少允许254字符。另一个可能的特性是文本行的结束方式。在MS-DS系统中,文本文件约定一个回车符加上换行符。但是UNIX只是使用一个换行符结尾。
(2) 二进制流
打开流:
FILE *fopen(char const *name,char const *name)
mode:如果一个文件打开是用于读取,那么它必须原先已经存在。但是如果一个文件打开是用于写入的,如果原来已经存在,那么原来的内容会删除。如果原先不存在,那么就创建一个新文件。
int fclose(FILE *f) 在文件关闭之前刷新缓冲区 执行成功fclose()返回0值 否则EOF
二进制IO
把数据写到文件效率最高的方法就是二进制写入。因为避免了数值转换位字符串过程中所涉及的开销和精度损失
size_t fread(void *buffer,size_t size,size_t count,FILE*stream)
size_t fwrite(void *buffer,size_T size,size_t count,FILE *stream)
buffer是一个指向用于保存数据的内存位置的指针,size是缓冲区每个元素的字节数,count是读取或者写入的元素数。
struct value{
long a;
float b;
char c[SIZE];
}values[ARRAY_SIZE];
n_values=fread(values,sizeof(struct VALUE),ARRAY_SIZE,input_stream);
刷新和定位函数
int fflush(FILE *stream)//不管缓冲区是不是满勒,当我们需要立即进行物理写入的时候,使用它。
long ftell
3 格式化的行IO
(1)int fscanf(FILE *stream,char const *format)
(2)int scanf(char* const *format,...)
这个format字符串参数如果是空白字符,在处理过程中将被忽略,也就是它和输入中的零个或者多个空白字符匹配。
(3)int sscanf(char const *string,char const *format)
sscanf处理行的技巧
while(fgets(buffer,BUFFER_SIZE,input)!=NULL)
{
if(sscanf(buffer,"%d %d %d %d %d",&a,&b,&c,&d,&e)!=4)
{}
}
<c和指针>学习笔记6输入输出函数的更多相关文章
- C++中的智能指针、轻量级指针、强弱指针学习笔记
一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"doubl ...
- stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...
- tensorflow学习笔记——多线程输入数据处理框架
之前我们学习使用TensorFlow对图像数据进行预处理的方法.虽然使用这些图像数据预处理的方法可以减少无关因素对图像识别模型效果的影响,但这些复杂的预处理过程也会减慢整个训练过程.为了避免图像预处理 ...
- C++学习笔记之输入、输出和文件
一.流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的. 缓冲区:内存的一块区域——用作文件与内存交换数据. 数据从文件中读出:文件 → ...
- C++ 学习笔记之——输入和输出
在 C++ 中,我们通过调用输入输出流库中的流对象 cin 和 cout 来实现输入和输出. #include <iostream> using namespace std; int ma ...
- C++学习 - 虚表,虚函数,虚函数表指针学习笔记
http://blog.csdn.net/alps1992/article/details/45052403 虚函数 虚函数就是用virtual来修饰的函数.虚函数是实现C++多态的基础. 虚表 每个 ...
- C++指针学习笔记
本文参考http://www.prglab.com/cms/pages/c-tutorial/advanced-data/pointers.php 1.存储其它变量地址的变量(如下面例子中的addre ...
- Python基础学习笔记---5.输入\输出 I\O文件操作目录
在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户那里得到输入,然后打印一些结果.我们可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,你也可以使用多种 ...
- 深入理解C指针----学习笔记
深入理解C指针 第1章 认识指针 理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址. 1.1 指针和内存 C程序在编译后,以三种方式使用内存: 1. 静态. ...
随机推荐
- [原创]java WEB学习笔记34:Session 案例 之 解决表单重复提交
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- P3160 [CQOI2012]局部极小值
题目 P3160 [CQOI2012]局部极小值 一眼就是状压,接下来就不知道了\(qwq\) 做法 我们能手玩出局部小值最多差不多是\(8,9\)个的样子,\(dp_{i,j}\)为填满\(1~i\ ...
- Cisco IOS版本命名规则
首先说说IOS的运行平台,c2500.c2600.c4500.c2950代表运行此IOS的硬件平台,例如:C2500指2500系列路由器. 其次,看看IOS的版本,IOS有主版本号:11.0.11.1 ...
- 申请内存的方式(1,malloc/free;2,new/delete)
一.malloc/free的方式 // 4个int 的大小int *p = (int*) malloc(16); for (int i = 0; i < 4; ++i) { p[i] = i; ...
- java入门了解08
1.集合深入 (一)hashSet实现原理: 当我们添加一个元素,HashSet会计算出其Hash值,再根据hash值在哈希表中找出存储他的位置 有两种情况:a.如果算出的hash值在哈希表中位置没有 ...
- javascript的40个网页常用小技巧
下面是javascript的40个网页常用小技巧,对网站开发人员相信会有帮助.1. oncontextmenu="window.event.returnValue=false" 将 ...
- DoTween插件
doteeen(hotween第二个版本) hotween leantween gokit itween(多个相同动画类型的插件):性能最高的是dotween 引用命名空间:using DG.Twee ...
- 分享知识-快乐自己:遍历Map集合
import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { pu ...
- Raft 为什么是更易理解的分布式一致性算法——(1)Leader在时,由Leader向Follower同步日志 (2)Leader挂掉了,选一个新Leader,Leader选举算法。
转自:http://www.cnblogs.com/mindwind/p/5231986.html Raft 协议的易理解性描述 虽然 Raft 的论文比 Paxos 简单版论文还容易读了,但论文依然 ...
- php函数decbin
decbin()将十进制转换为二进制.必须有一个十进制参数.