IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 文件——C语言 -> 正文阅读

[C++知识库]文件——C语言

目录

文件概念

文件名

文件指针

文件的关闭和打开?

打开方式:

fopen():打开文件

?fclose():文件关闭

?文件的顺序读写

?写文件(fputc)

读文件(fputs)

fgets


?

文件概念

? 在程序运行时,常常需要将一些数据(运行的最终结果和中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这就要用到磁盘文件
C语言把文件看作是一个字符(字节)的序列,即一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件二进制文件ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
? ? ? ? 在过去使用的C版本(如UNIX系统下使用的C)有两种对文件的处理方法:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。所缓冲文件系统是指系统自动地在内存中为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量)。缓冲区的大小由各个具体的C版本确定,一般为512字节。

文件名

一个文件要有唯一的文件标识,以便用户识别和使用

文件名包括三部分,文件路径+文件名主干+文件后缀

例如:c:codetest.txt

文件指针

??缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。

文件的关闭和打开?

打开方式:

文件使用方式含义如果指定的文件不存在
"r"(只读)为了输入数据,打开一个已存在的文本文件。出错
"w"(只写)为了输出数据,打开一个文本文件。建立一个新文件
"a"(追加)向文本文件尾添加数据出错
"rb"(只读)为了输入数据,打开一个二进制文件。出错
"wb"(只写)为了输出数据,打开一个二进制文件。建立一个新文件
"ab"(追加)向二进制文件尾添加数据出错
"r+"(读写)为了读和写,打开一个文本文件出错
"w+"(读写)为了读和写,建立一个新的文件建立一个新文件
"a+"(读写)打开一个文件,在文件尾进行读写建立一个新文件
"rb+"(读写)为了读和写,打开一个二进制文件出错
"wb+"(读写)为了读和写,新建一个新的二进制文件建立一个新文件
"ab+"(读写)打开一个二进制文件,在文件尾进行读和写建立一个新的文件

fopen():打开文件

fopen():文件打开操作
头文件:stdio.h
函数定义:FILE *fopen(char *pname, char *mode)
函数说明:pname是文件名,mode是打开文件的方式

#include<stdio.h>
int main()
{

	fopen("test.txt", "r");

	return 0;
}

打开文件的作用是:
(1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
(2)开辟一个缓冲区;
(3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;
FILE *:指出fopen是一个返回文件类型的指针函数;

 返回值
   正常返回:被打开文件的文件指针。
   异常返回:NULL,表示打开操作不成功。

关闭:

?fclose():文件关闭

函数定义:int fclose(FILE *fp);

函数说明:fp是一个以打开的文件的文件指针

返回值:

正常返回:0

异常返回:EOF,表示文件在关闭时发生错误

?文件的顺序读写

? ? ? ?功能? ? ? ? ? ? ? ? ?函数名? ? ? ? ? ? ? ? ? ? ? 适用于
字符输入函数? ? ? ? ? ? ? ? ?fgetc? ? ? ? ? ? ? ? 所有输入流
字符输出函数? ? ? ? ? ? ? ? ?fputc? ? ? ? ? ? ? ? 所有输出流
文本行输入函数? ? ? ? ? ? ? ? ?fgets? ? ? ? ? ? ? ? 所有输入流
文本行输出函数? ? ? ? ? ? ? ? fputs? ? ? ? ? ? ? ?所有输出流
格式化输入函数? ? ? ? ? ? ? ? fscanf? ? ? ? ? ? ? ?所有输入流
格式化输出函数? ? ? ? ? ? ? ? fprintf? ? ? ? ? ? ? ?所有输出流

二进制输入

? ? ? ? ? ? ? ? fread? ? ? ? ? ? ? ? ? ?文件
二进制输出? ? ? ? ? ? ? ? fwrite? ? ? ? ? ? ? ? ? ?文件

?写文件(fputc)

描述

C 库函数?int fputc(int char, FILE *stream)?把参数?char?指定的字符(一个无符号字符)写入到指定的流 stream 中,并把位置标识符往前移动。

声明

下面是 fputc() 函数的声明。

int fputc(int char, FILE *stream)

参数
  • char?-- 这是要被写入的字符。该字符以其对应的 int 值进行传递。
  • stream?-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。

返回值:?

如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。

#include<stdio.h>
#include<string.h>
int main()
{
	FILE*pf=fopen("test.txt", "w");
	if (pf == NULL)
	{
		printf("%s\n", strerror(errno));
		return 0;
	}
	fputc('b', pf);
	fputc('i', pf);
	fputc('t', pf);
	fclose(pf);
	return 0;
}

读文件(fputs)

描述

C 库函数?int fgetc(FILE *stream)?从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。

声明

下面是 fgetc() 函数的声明。

int fgetc(FILE *stream)

参数?

  • stream?-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。

返回值?

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

#include<stdio.h>
#include<string.h>
int main()
{
	FILE*pf=fopen("test.txt", "r");
	if (pf == NULL)
	{
		printf("%s\n", strerror(errno));
		return 0;
	}
	printf("%c", fgetc(pf));
	printf("%c", fgetc(pf));
	printf("%c", fgetc(pf));
	fclose(pf);
	return 0;
}

键盘-——标准输入设备——stdin

屏幕——标准输出设备——stdout

是一个程序默认打开的两个流设备

int main()
{
	int ch=fgetc(stdin);//从键盘上输入
	fputc(ch,stdout);//从屏幕上输出

	return 0;
}

fgets

描述

C 库函数?char *fgets(char *str, int n, FILE *stream)?从指定的流 stream 读取一行,并把它存储在?str?所指向的字符串内。当读取?(n-1)?个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

声明

下面是 fgets() 函数的声明。

char *fgets(char *str, int n, FILE *stream)

参数

  • str?-- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
  • n?-- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
  • stream?-- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。

返回值?

如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。

如果发生错误,返回一个空指针。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:12:56  更:2021-11-10 12:15:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:21:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码