`

文件输入输出

 
阅读更多

ANSI C提供了 文件的2种视图:

文本视图和二进制视图

 

二进制视图中,文本中的每个字节都可以为程序所访问 。在文本视图中,程序看到的内容和文本内容可能会有差异,差异主要体现在换行表现上 。使用文本试图读取文件时,将行尾的本地表示法转换成c试图的,在输出的时候,还要将c试图的行尾表示转换成本地的行尾表示法 。在msdos下 ,\r\n表示行尾。

 

二进制视图:文本的本地表现。

文本视图:文本行尾的本地表现转换成c视图后的表现。

 

在unix中二进制和文本没有差别。

 

 

标准文件:c程序自动打开3个文件,标准输入、标准输出、和标准错误输出

 

fopen()函数 :第一个参数是要打开的文件名(包含该文件名的字符串的地址),第二个参数用于指定文件打开模式的一个字符串

 

 

模式字符串  意义
"r" 打开一个文件,可以读取文件
"w" 打开一个文件,可以写入文件,先将文件的长度截取为0.如果文件不存在的话则先创建文件
"a" 打开一个文件,可以写入文件,向已有文件的尾部追加内容,如果文件不存在的话就先创建文件
"r+" 打开一个文件,可以进行更新,即可以读取和写入
"w+" 打开一个文件,可以读取和写入文件,先将文件的长度截取为0.如果文件不存在的话则先创建文件
"a+" 打开一个文件,可以读取和写入文件,向已有文件的尾部追加内容,如果文件不存在的话就先创建文件
上述模式后加上b 表示二进制而不是文本模式

 

对于unix和linux中文件模式只有一种,所以无所谓+b还是不加b,但是其中的w模式打开一个已有文件的话,文件的内容会被删除,以便程序以一个空文件开始操作。

 

程序成功打开一个文件之后,fopen()函数会返回一个文件指针,然后利用这个指针对文件进行其他操作。文件指针是一种指向FILE的指针,它不指向实际的文件,而是指向一个关于文件的信息的数据包。

如果打开不成功,fopen()函数返回空指针 Null

 

fprintf()和fscanf():工作方式和 printf()和scanf()类似,区别在于前2者须呀第一个参数来指定合适的文件int main()

{
	const int max=40;
	FILE  *fp;
	char words[max];

	if((fp=fopen("words","a+"))==NULL)
	{
		fprintf(stdout,"canopen file\n");
		exit(1);
	}
	puts("Enter words to add to the file: press the enter");
	puts("key at the beginning of a line to terminate");
	while(gets(words)!=NULL&&words[0]!='\0')
	{
		fprintf(fp,"%s",words);
	}
	puts("file contens:\n");
	rewind(fp);
	while(fscanf(fp,"%s",words)==1)
	{
		puts(words);
	}
	if(fclose(fp)!=0)
	{
		fprintf(stderr,"error in closing\n");
	}
	return 0;
}

 

rewind()函数接受一个文件指针,然后指向文件的开头。

 

fgets()和fputs()函数

fgets()函数 接受三个参数:第一个参数,用来存储输入的地址(char *类型),第二个参数是整数 用来保存输入字符串的最大长度;最后一个参数是文件指针,指向所有读取的文件。

 

 

fgets(buf,MAX,fp);

 buf是一个char数组的名称,MAX是字符串最大长度,fp是一个指向FILE的指针。该函数读取的哦啊他所遇到的第一个换行字符的后面,或者读取比字符串最大长度少一个的字符,或者是文件的末尾。容纳后fgets自己添加空字符以构成一个字符串 。

 

 


随机存取 : fseek()和ftell()函数

fseek()函数有点类似数组 ,随即存取,在 fopen()打开的文件中直接移动到任意字节处 。

ftell()函数以一个long类型值返回文件的当前位置。

 

 

 

分享到:
评论

相关推荐

    基于Java文件输入输出流实现文件上传下载功能

    基于Java文件输入输出流实现文件上传下载功能 本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件...

    C++文件输入输出

    ### C++ 文件输入输出知识点详解 #### 一、概述 在C++中,处理文件的输入输出主要依赖于`fstream.h`头文件中定义的几个关键类:`ifstream`(用于文件输入)、`ofstream`(用于文件输出)以及`fstream`(支持文件的...

    文件 输入输出缓冲流

    在编程领域,文件输入输出(I/O)是处理数据存储和检索的核心部分。在这个场景中,我们关注的是“文件输入输出缓冲流”,这是Java或C++等编程语言中常用的概念,用于提高文件读写效率。缓冲流允许我们将数据批量处理...

    matlab matlab文件输入输出

    MATLAB 文件输入输出 MATLAB 是一款为科学家和工程师量身打造的强大软件,是进行计算、模拟、数据分析和可视化等任务的理想工具。它拥有简洁直观的界面和强大的功能,能够轻松处理复杂数学运算和算法开发。MATLAB...

    coreJava文件输入输出流源代码

    在Java编程语言中,核心Java(Core Java)涵盖了基本的语法和特性,其中包括文件输入输出流(File Input/Output Stream)的概念。文件输入输出流是Java.IO包中的关键类,用于处理程序与磁盘文件之间的数据传输。在这...

    Java文件输入输出流.ppt

    Java文件输入输出流,详细描述了java对文件流的操作

    C++文件输入输出的使用

    C++中的文件输入输出是程序与外部存储交互的重要手段,它允许我们将数据保存到磁盘上以便后续使用或与其他程序共享。在C++中,文件操作主要通过标准库中的`fstream`头文件来实现,包括`ifstream`(输入文件流)、`...

    文件输入输出流(总概)

    在Java编程语言中,文件输入输出流(File I/O Stream)是处理文件数据的基本机制。本文将深入探讨这个主题,包括基本概念、类库、使用示例以及常见问题。 一、基本概念 文件输入流(FileInputStream)和文件输出流...

    Java的输入输出流实现文件的复制

    1.编写应用程序,使用文件输入输出流实现文件的复制,被拷贝的源文件和复制的目标文件由命令行参数给出。 2.编写应用程序,创建一个文件输出流,向文件中分别写入以下类型数据:int、double和字符串,然后创建一个...

    第6章基于C流类库的文件输入输出和程序的组织new07.pptx

    在C++编程中,文件输入输出是程序与外部数据交互的重要方式。本章主要探讨了如何利用C++的流类库进行文件的读写操作,并介绍了程序的组织结构。C++的流类库提供了一种高效且灵活的方式来处理输入输出,不仅支持标准...

    文本文件输入输出.cpp

    文本文件输入输出.cpp

    c语言文件输入输出参考.exe

    c语言文件输入输出参考.exe

    JAVA常用类与文件输入输出类实验报告

    常用类与文件输入输出类,包含实验源代码及运行结果 实验1 检索图书 实验2 统计英文单词

    07.mr编程案例--替换默认的文本输入输出组件为sequence文件输入输出组件.mp4

    07.mr编程案例--替换默认的文本输入输出组件为sequence文件输入输出组件.mp4

    sketchup stl文件输入输出插件

    sketchup stl文件输入输出插件 不要费心下载后缀为rbz的文件了,这个才是能用的,还有那些庞大而垃圾的插件包。

    qt 输入输出文件目录

    在Qt中,进行文件输入输出(I/O)是通过QFile类来实现的。QFile提供了基本的文件操作功能,如打开、关闭、读取和写入文件。下面我们将深入探讨Qt中的文件和目录操作。 1. **QFile的使用**: - **打开文件**:使用`...

Global site tag (gtag.js) - Google Analytics