`
bcyy
  • 浏览: 1832324 次
文章分类
社区版块
存档分类
最新评论

标准IO中函数的学习

 
阅读更多

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语言标准函数库源码,相当全的库函数源码!

    C语言标准库函数源码大全(24M涵盖所有库函数) ,相当全的库函数源码! 如标准 io ,字符类处理等,各种源码库函数,是学习C语言,精通C语言的必备良药!平时项目参考相当给力!

    01.什么是Linux系统编程 02. Linux系统编程的基本框架

    linux系统编程 ...标准IO是间接调用系统函数,头文件是stdio.h 文件IO是依赖于操作系统的;标准IO是不依赖于操作系统的。所以在任何操作系统下,使用标准IO,也就是C库函数操作文件的方法都是相同的。

    正点原子最新标准例程(V3.5库函数版本)

    正点原子最新标准例程(V3.5库函数版本),含57个实验例程,方便STM32开发学习

    Go的基本教程.txt

    掌握Go语言的标准库和常用包的使用,如fmt、os、io等。 容器与数据结构: 学习Go语言中的数组、切片(slice)、映射(map)和列表等容器类型,以及它们的基本操作。 掌握使用make和append函数创建和操作切片的...

    非常经典的c++ primer视频教程6-10

    第8章 标准IO库 8.1 面向对象的标准库 8.2 条件状态 8.3 输出缓冲区的管理 8.4 文件的输入和输出 8.4.1 文件流对象的使用 8.4.2 文件模式 8.4.3 一个打开并检查输入文件的程序 8.5 字符串流

    tensorflow下的图片标准化函数per_image_standardization用法

    函数介绍:标准化处理可以使得不同的特征具有相同的尺度(Scale)。 这样,在使用梯度下降法学习参数的时候,不同特征对参数的影响程度就一样了。 tf.image.per_image_standardization(image),此函数的运算过程是将...

    Python 异步协程函数原理及实例详解

    1.python3.4开始引入标准库之中,内置对异步io的支持 2.asyncio本身是一个消息循环 3.步骤: (1)创建消息循环 (2)把协程导入 (3)关闭 4.举例: import threading # 引入异步io包 import asyncio # 使用协程 @...

    【推荐】最强大数据学习与最佳实践资料合集(基础+架构+数仓+治理+案例)(100份).zip

    hive语法和常用函数 Kafka安装 kylin安装 mapreduce调优指南 sqoop安装 二、架构篇 Flink-1.11 Hive集成与批流一体 ClickHouse在苏宁用户画像场景的实践 优酷大数据 OLAP 技术选型 阿里数据湖选型 各种系统架构图与...

    lua 程序设计学习.doc 版

    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...

    Tokio 和 Async IO 到底都是些啥玩意?

    最近 Async IO, 也就是异步IO的一些标准语法也已经包含在了Rust 稳定版本里面比如 async 和 await 关键字. 可我之前在学习 Async IO的过程当中, 一直有些疑惑. 比如那些经常听说的库 tokio, mio, futures ...

    es6新特性 学习word版2018最新

    ECMAScript 6 简称 ES6,是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ECMAScript 和 JavaScript 的关系...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础...16_标准IO_输入api_上 17_标准IO_输入api_下 ...

    在 Matlab 中运行 xgboost 的函数:提供了两个文件:xgboost_train 和 xgboost_test,它们从 Matlab 内部调用 xgboost dll。 该示例用于分类。-matlab开发

    可以提供停止学习过程迭代的评估标准。 支持的评估标准是“AUC”、“准确度”、“无”。 'AUC'和'Accuracy'需要统计工具箱。 如果 eval_metric == 'None',则将针对 max_num_iters 执行学习,无需内部交叉验证。 ...

    python核心知识(思维导图)

    本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库,后续会发布相应专题的文章)。 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合)...

    net学习笔记及其他代码应用

    Override 是进行基类中函数的重写。为了适应需要。 6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程...

    windows 64位 python-3.4安装包

    Python标准库命名接口清晰、文档良好,很容易学习和使用。 Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而...

    APUE(UNIX环境高级编程)——文件I/O篇

    本章开始讨论UNIX系统,先说明可用的文件I/O函数——打开文件、读文件、写文件等等。 大多数UNIX文件I/O只需用到5个函数: open ...本章所说明的函数经常被称之为不带缓存的I/O(与标准I/O 函数相对照

    windows驱动开发技术详解-part2

     本章重点介绍了驱动程序中的处理IRP请求的派遣函数。所有对设备的操作最终将转化为IRP请求, 这些IRP请求会被传送到派遣函数处理。  7.1 IRP与派遣函数  7.1.1 IRP  7.1.2 IRP类型  7.1.3 对派遣函数的...

    Windows驱动开发技术详解的光盘-part1

     本章重点介绍了驱动程序中的处理IRP请求的派遣函数。所有对设备的操作最终将转化为IRP请求,这些IRP请求会被传送到派遣函数处理。  7.1 IRP与派遣函数  7.1.1 IRP  7.1.2 IRP类型  7.1.3 对派遣函数的简单...

Global site tag (gtag.js) - Google Analytics