C语言基础知识复习(考研)

(1)C语言文件操作

1 什么是文件

文件有不同的类型,在程序设计中,主要用到两种文件:
(1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。
(2)数据文件。文件的内容不是程序,而是供程序运行时读写的数据,如在程序运行过程中输出到磁盘(或其他外部设备)的数据,或在程序运行过程中供读入的数据。如一批学生的成绩数据、货物交易的数据等。主要讨论的是数据文件。
(3)操作系统把各种设备统一当做文件来处理。
(4)根据数据的组织形式,数据文件可分为ASCII文件和二进制文件
数据在内存中是以二进制形式存储的,如果不加转换地输出到外存,就是二进制文件,可以认为它就是存储在内存的数据的映像,所以也称之为映像文件(image file)。如果要求在外存上以ASCⅡ代码形式存储,则需要在存储前进行转换。ASCⅡ文件又称文本文件(text file),每一个字节存放一个字符的ASCII代码。 ASCII码输出字符的时候是一个字节对应一个字符(也可以这样表示一个数值),二进制文件只能表示数值且是二进制数值形式
在这里插入图片描述

(2)文件缓冲区

文件在进行输入输出操作的时候都先把数据分别输入到缓冲区里面以后在进行输入与输出,缓冲区大小由C编译器决定

在这里插入图片描述

(3)文件类型指针

每一个文件都会在内存开辟一个专门用于存放文件信息的区域,这些信息是保存在一个结构体变量File里面的,信息如下:

typedef struct
{
short level;//缓冲区“满”或“空”的程度
unsigned flags;//文件状态标志
char fd;//文件描述符
unsigned char hold;//如缓冲区无内容不读取字符
short bsize;//缓冲区的大小
unsigned char*buffer;//数据缓冲区的位置
unsigned char*curp;//文件位置标记指针当前的指向
unsigned istemp;//临时文件指示器
short token;//用于有效性检查
} FILE;
FILE*fp;//定义一个指向FILE结构体的指针fp

在进行文件操作的时候都定义一个FILE的指针类型来对FILE进行访问而不是直接用FILE,具体如下:

在这里插入图片描述

(4)文件操作

(1)fopen的函数调用参数如下图所示:

FILE* pf= fopen("word.txt", "r");
	if (pf != NULL)
	{
		printf("成功打开文件\n");
		return;
	}
	else printf("打开文件失败\n");
	fclose(pf)

在这里插入图片描述
(2)向文件读写单个字符的函数fgetc()fputc()

	FILE*fp1=fopen("in.txt","w+");
	char ch;
	printf("请输入你想输入到文件的字符串(以#作为结束):"); 
	ch=getchar();
	while(ch!='#')
	{
		fputc(ch,fp1);
		ch=getchar();
	} 
	fclose(fp1);
	//------------------------------------------------------------------------------------------ 
    printf("the answer is:"); 
	FILE*fp2=fopen("answer.txt","r");
	ch=fgetc(fp2);
	while(ch!=EOF)
	{
		printf("%c",ch);
		ch=fgetc(fp2);
	}
	fclose(fp2);

!](https://img-blog.csdnimg.cn/direct/4cb00c5224ef40f0bf1e3147d652cdbe.png)

在这里插入图片描述
ch=getchar()用于给字符ch赋值,但是往往scanf后面跟着一个getchar是为了消化scanf的回车
在这里插入图片描述
② fgetc()访问文件内的字符的时候是一个一个访问的,每一次访问完一个字符以后fgetc()就会自动往后面移动一个字符,如果要判断是否移动到了文件的末位就可以用一下语句:

在这里插入代码片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/480819.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win10下自由切换多版本JDK操作

1.在window 系统变量 path路径追加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 2.下载多版本jdk zip文件解压到到C:\Program Files\Java\目录下 3.定义切换Java版本的bat文件,内容如下 @echo off @echo -------------------welcome to use Java version switch service------------…

短剧分销cps推广很简单,短剧分销授权平台怎么搭建?

一、短剧分销是什么? 短剧分销,也被称为短剧CPS,是一种通过推广短剧并获得收益的方式。分销方会提供短剧片单,内容创作者可以根据这些片单剪辑成短视频内容进行分发。这样既能避免版权问题,又可以利用优质内容吸引用户…

vue3怎么使用reactive赋值

使用ref赋值: const list ref([]) const getList async () > {const res await axios.get(/list)list.value res.data } 如何使用reactive来替换呢? //const list ref([]) const list reactive([]) const getList async () > {const res…

LabVIEW焓差试验室流量计现场自动校准系统

LabVIEW焓差试验室流量计现场自动校准系统 在现代工业和科研领域,流量计的准确性对于保证生产过程的质量和效率非常重要。开发了一种基于LabVIEW的焓差试验室流量计现场自动校准系统,通过提高流量计校准的准确性和效率。 在空调器空气焓值法能效测量装…

3.22号arm

作业 实验现象,主函数每一秒循环字符m,当按下按键1,则串口输出1,按下按键2,串口输出2,按下按键3,串口输出3 main.c #include "uart4.h"#include "led.h"#include "k…

LeetCode每日一题——x 的平方根

x 的平方根OJ链接&#xff1a;69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 乍一看题目只需要算一个数的平方根&#xff0c;根据我们之前学的C语言我们能很快的想到使用sqrt&#xff0c;pow这类的<math.h>库函数&#xf…

【python】Anaconda安装后打不开jupyter notebook(网页不自动跳出)

文章目录 一、遇到的问题&#xff1a;jupyter notebook网页不自动跳出&#xff08;一&#xff09;输入jupyter notebook命令&#xff08;二&#xff09;手动打开网页 二、解决办法&#xff1a;指定浏览器&#xff08;一&#xff09;找文件 jupyter_notebook_config.py&#xff…

备考ICA----Istio实验7---故障注入 Fault Injection 实验

备考ICA----Istio实验7—故障注入 Fault Injection 实验 Istio 的故障注入用于模拟应用程序中的故障现象&#xff0c;以测试应用程序的故障恢复能力。故障注入有两种: 1.delay延迟注入 2.abort中止注入 1. 环境准备 kubectl apply -f istio/samples/bookinfo/platform/kube/…

聚酰亚胺PI材料难于粘接,用什么胶水粘接?那么让我们先一步步的从认识它开始(七): 聚酰亚胺PI薄膜的厚度

聚酰亚胺PI薄膜的厚度 聚酰亚胺&#xff08;PI&#xff09;薄膜的厚度可以根据具体的应用需求而有所不同&#xff0c;通常可以在几个微米&#xff08;μm&#xff09;到几十微米之间。下面是一些常见的聚酰亚胺PI薄膜的厚度范围及其应用&#xff1a; 1.超薄膜&#xff1a; 聚酰…

练习实践-进程回收01-找到并清理僵尸进程

参考来源&#xff1a; https://blog.csdn.net/qq_36528114/article/details/71076110 https://blog.51cto.com/u_12083623/2363384 极客时间-性能优化实战-CPU性能篇 进程回收中的孤儿和僵尸进程的特点 演示环境&#xff1a; 操作系统&#xff1a;Ubuntu18.04 查询工具&#x…

【超全详解】Maven工程配置与常见问题解决指南

Maven工程 目录 Maven工程一、如何检查Maven工程是否配置正确&#xff1f;1、检查路径2、检查基本配置3、其他配置 二、Maven的基本操作基本操作install和package的区别 三、获取别人的Maven工程之后如何修改&#xff1f;四、如何正确写好配置文件&#xff1f;1.寻找配置资源2.…

eclipse中使用PlantUML plugin查看对象关系

一.背景 公司安排的带徒弟任务&#xff0c;给徒弟讲了如何设计对象。他们的思维里面都是单表增删改查&#xff0c;我的脑海都是一个个对象&#xff0c;他们相互关系、各有特色本事。稳定的结构既能满足外部功能需求&#xff0c;又能在需求变更时以最小代价响应。最大程度的记录…

代码随想录 动态规划-子序列问题-子序列(连续)

目录 674.最长连续递增序列 718.最长重复子数组 53.最大子数组和 674.最长连续递增序列 674. 最长连续递增序列 简单 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&…

【经验分享】Typora 设置代码块的默认语言并设置为开机启动

Typora 设置代码块的默认语言并设置为开机启动 目录 Typora 设置代码块的默认语言并设置为开机启动引入设置代码块的默认语言将其设置为开机启动 引入 我们在使用Typora的时候&#xff0c;通过CtrlShiftK生成代码块时&#xff0c;会发现我们每次都需要重新设置代码块的语言类型…

【C++练级之路】【Lv.15】AVL树(双子旋转,领略绝对平衡之美)

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、AVL树的概念二、AVL树的模拟实现2.1 结点2.2 成员变量2.3 插入2.4 旋转2.4.1 左单旋2.4.2 右单旋2.4.3 …

【聚类】K-Means聚类(优缺点、手肘法、轮廓系数法、检测异常点、图像压缩,含代码实战)

写在前面&#xff1a; 首先感谢兄弟们的关注和订阅&#xff0c;让我有创作的动力&#xff0c;请一键三连&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 1、…

FPGA - AXI4_Lite(实现用户端与axi4_lite之间的交互逻辑)

在之前的博客中对AXI4总线进行了介绍&#xff08;FPGA-AXI4接口协议概述&#xff09;&#xff0c;在这篇博客中&#xff0c;实现用户端与axi4_lite之间的交互逻辑。 一&#xff0c; AXI4 1.1 AXI4 介绍 对AXI4总线简单介绍&#xff08;具体可见FPGA-AXI4接口协议概述&#…

【3D reconstruction 学习笔记】

三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…

AJAX踩坑指南(知识点补充)

JWT JSON Web Token是目前最为流行的跨域认证解决方案 如何获取&#xff1a;在使用JWT身份验证中&#xff0c;当用户使用其凭据成功登录时&#xff0c;将返回JSON Web Token(令牌&#xff09; Token本质就是一个包含了信息的字符串 如何获取Token:登录成功之后&#xff0c;服务…