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

news2024/12/24 2:36:07

(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()就会自动往后面移动一个字符,如果要判断是否移动到了文件的末位就可以用一下语句:

在这里插入代码片

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Blender小:图片转mesh,并展UV

其实就这么一个插件:Image2Mesh https://github.com/kedepot/i2m-std blender加载完图片之后点这个就行 到了这一步还不行如果直接放到unity中使用的话,添加材质和贴图之后每一个小块都是独立的区域来展示贴图,所以需要展UV

python_BeautifulSoup爬取汽车评论数据

爬取的网站: 完整代码在文章末尾 https://koubei.16888.com/57233/0-0-0-2 使用方法: from bs4 import BeautifulSoup 拿到html后使用find_all()拿到文本数据,下图可见,数据标签为: content_text soup.find_all…

Linux:rpm部署Jenkins(1)

1.获取Jenkins安装包 我这里使用的是centos7系统,ip为:192.168.6.6 2G运存 连接外网 Jenkins需要java环境,java的jdk包你可以去网上下载离线包,或者直接去yum安装,我这里使用的是yum安装 再去获取Jenkins的rpm包…

JavaScript高级(十七)---异步函数await-async

异步函数 async function 异步函数的内部代码执行过程和普通的函数是一致的,默认情况下也是会被同步执行。 async function foo() {console.log("foo function start~")console.log("内部的代码执行1")console.log("内部的代码执行2&quo…

项目风采展示【车酷-传祺】

桌面功能介绍: 1:支持本地音乐控制 2:蓝牙音乐控制 3:三方音乐控制

课时72:流程控制_for循环_嵌套循环

1.1.1 嵌套循环 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 这里的嵌套实践,与选择语句的嵌套实践基本一致,只不过组合的方式发生了一些变化。常见的组合样式如下:for嵌套for语句for …

【自然语言处理七-经典论文-attention is all you need】

然语言处理七-经典论文-attention is all you need 摘要原文译文小结 1:引言原文译文小结 2:背景原文译文小结 3:模型架构原文译文小结 3.1 编码器和解码器原文译文小结 3.2 注意力原文译文小结3.2.1 缩放点积注意力原文总结 3.2.2 多头注意力…

Django信号

一、介绍 Django有一个“信号调度器(signal dispatcher)”,当框架中的其他地方发生操作时,它可以通知一些解耦的应用程序 官网:信号 | Django 文档 | Django 1.1、内置的信号的使用 1.1.1、定义接收器函数 def my_callback(sender, **kwargs):print("Request finis…

JAVA 8 新特性 Lamdba表达式(二)

一、Lamdba的语法 (参数类型1 参数1,参数类型2 参数2,…) -> { 方法体 }; Lambda表达式就是一个匿名函数,不关注方法名,只关注参数和方法体。 Lambda表达式组成三要素:括号(),箭头->,代码…

Error Lens插件

最近在看视频学习的时候,发现了一个我认为很好用的插件。 就是Error Lens,这个插件它能够以高亮、内联显示代码中的错误、警告和其他诊断信息,让开发者无需查看控制台或问题面板,就能在编辑代码的过程中直观地看到并快速定位到代码…

网络工程师练习题6

网络工程师 综合题 计算并填写下表: TP地址191.23.181.13子网掩码255.255.192.0地址类型 (1)网络地址(2)直接广播地址(3)主机号(4)子网内的最后一个可用IP地址&#xf…

现代游戏引擎架构

一、并行编程 1.1 为什么需要并行编程 游戏的渲染计算对算力要求很高,所以我们需要把操作系统的资源利用到极致。 但是摩尔定律已经不在适用了,硬件的发展目前已经达到瓶颈。所以我们需要通过数量来提高计算效率。 1.2 并行编程基础 进程与线程&#…

【python开发】安装配置启动+数据库管理+表管理+数据行管理+python操作Mysql及相关安全的问题

Mysql入门 一、安装&启动1、安装2、测试3、设置和修改root密码 二、数据库管理1、内置客户端操作(1)查看当前所有的数据库(show databases);(2)创建数据库:create database learn(数据库名)…

FEX-Emu在Debian/Ubuntu系统使用

FEX-Emu在Debian/Ubuntu系统使用 1. Debootstrap子系统安装(可选)2. Debian/Ubuntu依赖包安装3. 获取FEX-Emu源码并编译4. 根文件系统RootFS安装5. 基于 FEX-Emu 运行应用 1. Debootstrap子系统安装(可选) sudo apt-get install …

Spring Boot 3 极速搭建OAuth2认证框架

本篇环境 Java 17Spring Boot 3.2.3Spring Authorization Server 1.2.3开发工具 SpringToolSuite4Spring Boot 3.2.3 需要JDK 17及之上的版本。 项目初始化 项目可以使用Spring的初始化器生成, 也可以创建一个Maven类型的项目。 项目创建后的目录结构如下: 项目配置 使用 …

1、goreplay流量回放

目的 在实际项目中,会有大量的回归测试工作,通常会使用自动化代码的手段来实现回归,但是对于一个庞大的系统来说,通过自动化脚本的方式来实现回归测试,又显得很费时费力。并且如果有定期将线上数据同步到测试环境的需求…

GStreamer简单看看

主要是现在弄摄像头,要用到这东西。所以学学。 最权威主页:GStreamer: open source multimedia framework 大概看了下,好像命令也不难。 gst-launch-1.0 v4l2src device/dev/video0 ! video/x-raw,formatYUY2,width640,height480,framerat…

Java项目:71 ssm基于ssm+vue的外卖点餐系统+vue

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统功能 系统分为前台订餐和后台管理: 1.前台订餐 用户注册、用户登录、我的购物车、我的订单、商品列表 2.后台管理 商品管理&#xf…

PID算法原理分析及优化

今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。 在大学期间,参加的智能汽车竞赛中就使用到了PI…

WordPress站点如何实现发布文章即主动推送到神马搜索引擎?

平时boke112百科很少关注到神马搜索引擎,近日有站长留言想要实现WordPress站点发布文章就主动推送到神马搜索引擎,而且推送成功就自动添加一个自定义字段,以防重复推送。 登录进入神马站长平台后才知道神马也有一个API推送功能,不…