<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. 静态. ...
随机推荐
- while 读取文件内容
exec < filename while read line;do echo $line done 方法1 while read line;do echo $line done<$ 方法 ...
- 算法(Algorithms)第4版 练习 2.1.25
代码实现: package com.qiusongde; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; ...
- 算法(Algorithms)第4版 练习 1.5.15
用归纳法推导: 1.height = 0时,成立,其level 0的节点个数为C(0,0)=1. height = 1时,成立,其level 0的节点个数为C(1,0)=1,其level 1的节点个数 ...
- Codeforces 876C Classroom Watch:枚举
题目链接:http://codeforces.com/contest/876/problem/C 题意: 定义函数:f(x) = x + 十进制下x各位上的数字之和 给你f(x)的值(f(x) < ...
- linux应用之make命令详解
从源代码安装过软件的朋友一定对 ./configure && make && make install 安装三步曲非常熟悉了.然而究竟这个过程中的每一步幕后都发生了些什 ...
- Python编程-一个小爬虫工具的实现过程
需求描述: 1,打开网站: 2,获取网站的文件内容: 3,返回保存到文件中: 这里的就用到了多线程的方法 import requests,threading,time def write_html(u ...
- codeforces 622C C. Not Equal on a Segment
C. Not Equal on a Segment time limit per test 1 second memory limit per test 256 megabytes input sta ...
- diea破解
选择菜单Help->Register->License server,填上http://idea.iteblog.com/key.php,如图所示: 点击Activate,然后就搞定了.
- ACM学习历程—POJ 3764 The xor-longest Path(xor && 字典树 && 贪心)
题目链接:http://poj.org/problem?id=3764 题目大意是在树上求一条路径,使得xor和最大. 由于是在树上,所以两个结点之间应有唯一路径. 而xor(u, v) = xor( ...
- HLSL学习笔记(一):基础
http://www.cnblogs.com/rainstorm/archive/2013/05/04/3057444.html 前言 五一在家无事,于是学习了一下HLSL,基于XAN4.0的.学习完 ...