1、打开流
下列三个函数可用于打开一个标准I / O流。
************************************************************************************
#include <stdio.h>
FILE *fopen(const char * p a t h n a m e, const char *t y p e) ;
FILE *freopen(const char * p a t h n a m e, const char *t y p e, FILE *f p) ;
FILE *fdopen(int f i l e d e s, const char *t y p e) ;
三个函数的返回:若成功则为文件指针,若出错则为N U L L
********************************************************************************************
这三个函数的区别是:
(1) fopen打开路径名由pathname 指示的一个文件。
(2) freopen在一个特定的流上(由f p指示)打开一个指定的文件(其路径名由pathname 指示),
如若该流已经打开,则先关闭该流。此函数一般用于将一个指定的文件打开为一个预定义的流:
标准输入、标准输出或标准出错。
(3) fdopen取一个现存的文件描述符(我们可能从o p e n , d u p , d u p 2 , f c n t l或p i p e函数得到此文
件描述符),并使一个标准的I / O流与该描述符相结合。此函数常用于由创建管道和网络通信通
道函数获得的插述符。因为这些特殊类型的文件不能用标准I/O fopen函数打开,首先必须先调
用设备专用函数以获得一个文件描述符,然后用f d o p e n使一个标准I / O流与该描述符相结合。
打开标准IO流的MOde参数:
r或rb |
以只读方式打开,该文件必须存在 |
r+或rb+ |
以读写方式打开,该文件必须存在 |
w或wb |
以只读方式打开,如何文件不存在,则创建,如果文件存在,文件长度清0 |
w+或wb+ |
以读写方式打开文件,如何文件不存在,则创建文件;如果文件存在,文件长度清0 |
a或ab |
以追加的方式打开可读可写文件,如果文件不存在,则创建文件;如何文件存在,写入的数据会追加到文件的末尾,源文件的内容会保留; |
a+或ab+ |
以追加的方式打开可读可写文件,如果文件不存在,则创建文件;如果文件存在,写入的数据会追加到文件的末尾,原文件会被保留 |
* 当给定b参数时,表示以二进制的方式打开文件;
下面的例子会对打开流有深入的认识:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#define N 0
int main(int argc,char *argv[])
{
FILE *fp;
if(argc < 2)
{
fprintf(stdout,"usage:%s filename\n",argv[0]);
return -1;
}
if((fp = fopen(argv[1],"r+")) == NULL)
{
perror("fopen");
return -1;
}
printf("before freopen\n");
//将标准输出重定向到argv[1]文件中;
freopen(argv[1],"w",stdout);
printf("after freopen\n");//这句不会在屏幕上输出;而被输出到文件中
//将标准输出重定向到 /dev/tty (显示器)上;
freopen("/dev/tty","w",stdout);
//屏幕打印出下面的语句
printf("end main\n");
#if N
if(fp = fopen("./hello","r+") == NULL)
{
fprintf(stderr,"fopen()adadadadad %s\n",strerror(errno));
return -1;
}
fclose(fp);
#endif
return 0;
}
#include <stdio.h>
//从文件1.c中有效读入2个整数,并讲结果输出到out.c中,屏幕上不会输出2个的和;
int main()
{
//将标准输入重定向到1.c文件
freopen("./1.c","r",stdin);
//将并准输出重定向到out.c文件中
freopen("./out.c","w",stdout);
int a,b;
while(scanf("%d%d",&a,&b) != EOF)
printf("%d\n",a+b);
fclose(stdin);
fclose(stdout);
return 0;
}
标准IO库 fclose()
*******************************************************************************************************
int fclose(FILE * stream)
调用成功则返回0,失败则返回EOF,并设置ERRNO;
*******************************************************************************************************
在该文件关闭前刷新缓存中的数据;
标准IO库,读写流---字符IO输入输出
1)以下三个函数可用于一次读一个字符:
***********************************************************************
int getc(FILE * stream)
int fgetc(FILE *stream)
int getchar(void)
函数成功则返回一个字符;若已处于文件的结尾或者出错返回EOF
***************************************************************
*函数getchar()等同于 getc(stdin);
*getc的实现是一个宏,而fgetc则是一个函数
2)以下三个函数可用于一次输出一个字符
*************************************************************
int putc (int c,FILE * stream);
int fputc(int c.FILR * stream);
int putchar(void);
返回值为一个无符号字符转换为int;失败则返回EOF
**************************************************************
具体例子
#include <stdio.h>
#include <stdlib.h>
int main()
{
while(1)
{
putchar(getchar());
}
return 0;
}
标准IO库,读写流 -----行IO的输入输出
******************************************************************
char * gets(char *s);
char * fgets(char *s,int size ,FILE *stream);
成功返回为BUF,文件结尾或者失败则返回NULL
***********************************************************************************************
分享到:
相关推荐
C语言标准库函数源码大全(24M涵盖所有库函数) ,相当全的库函数源码! 如标准 io ,字符类处理等,各种源码库函数,是学习C语言,精通C语言的必备良药!平时项目参考相当给力!
linux系统编程 ...标准IO是间接调用系统函数,头文件是stdio.h 文件IO是依赖于操作系统的;标准IO是不依赖于操作系统的。所以在任何操作系统下,使用标准IO,也就是C库函数操作文件的方法都是相同的。
正点原子最新标准例程(V3.5库函数版本),含57个实验例程,方便STM32开发学习
掌握Go语言的标准库和常用包的使用,如fmt、os、io等。 容器与数据结构: 学习Go语言中的数组、切片(slice)、映射(map)和列表等容器类型,以及它们的基本操作。 掌握使用make和append函数创建和操作切片的...
第8章 标准IO库 8.1 面向对象的标准库 8.2 条件状态 8.3 输出缓冲区的管理 8.4 文件的输入和输出 8.4.1 文件流对象的使用 8.4.2 文件模式 8.4.3 一个打开并检查输入文件的程序 8.5 字符串流
函数介绍:标准化处理可以使得不同的特征具有相同的尺度(Scale)。 这样,在使用梯度下降法学习参数的时候,不同特征对参数的影响程度就一样了。 tf.image.per_image_standardization(image),此函数的运算过程是将...
1.python3.4开始引入标准库之中,内置对异步io的支持 2.asyncio本身是一个消息循环 3.步骤: (1)创建消息循环 (2)把协程导入 (3)关闭 4.举例: import threading # 引入异步io包 import asyncio # 使用协程 @...
hive语法和常用函数 Kafka安装 kylin安装 mapreduce调优指南 sqoop安装 二、架构篇 Flink-1.11 Hive集成与批流一体 ClickHouse在苏宁用户画像场景的实践 优酷大数据 OLAP 技术选型 阿里数据湖选型 各种系统架构图与...
27.3 在C函数中保存状态 27.3.1 The Registry 27.3.2 References 27.3.3 Upvalues 第28章 User-Defined Types in C 28.1 Userdata 28.2 Metatables 28.3 访问面向对象的数据 28.4 访问数组 28.5 Light Userdata 第29...
最近 Async IO, 也就是异步IO的一些标准语法也已经包含在了Rust 稳定版本里面比如 async 和 await 关键字. 可我之前在学习 Async IO的过程当中, 一直有些疑惑. 比如那些经常听说的库 tokio, mio, futures ...
ECMAScript 6 简称 ES6,是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ECMAScript 和 JavaScript 的关系...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础...16_标准IO_输入api_上 17_标准IO_输入api_下 ...
可以提供停止学习过程迭代的评估标准。 支持的评估标准是“AUC”、“准确度”、“无”。 'AUC'和'Accuracy'需要统计工具箱。 如果 eval_metric == 'None',则将针对 max_num_iters 执行学习,无需内部交叉验证。 ...
本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库,后续会发布相应专题的文章)。 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合)...
Override 是进行基类中函数的重写。为了适应需要。 6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程...
Python标准库命名接口清晰、文档良好,很容易学习和使用。 Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而...
本章开始讨论UNIX系统,先说明可用的文件I/O函数——打开文件、读文件、写文件等等。 大多数UNIX文件I/O只需用到5个函数: open ...本章所说明的函数经常被称之为不带缓存的I/O(与标准I/O 函数相对照
本章重点介绍了驱动程序中的处理IRP请求的派遣函数。所有对设备的操作最终将转化为IRP请求, 这些IRP请求会被传送到派遣函数处理。 7.1 IRP与派遣函数 7.1.1 IRP 7.1.2 IRP类型 7.1.3 对派遣函数的...
本章重点介绍了驱动程序中的处理IRP请求的派遣函数。所有对设备的操作最终将转化为IRP请求,这些IRP请求会被传送到派遣函数处理。 7.1 IRP与派遣函数 7.1.1 IRP 7.1.2 IRP类型 7.1.3 对派遣函数的简单...