文件基础知识

计算机中的流:在C语言中将通过输入/输出设备(键盘、内存、显示器、网络等)之间的数据传输抽象表述为“流”。

1、文本流和二进制流

在文本流中输入输出的数据是一系列的字符,可以被修改在二进制流中输入输出数据是一系列字节,不能以任何方式修改。

2、预定义的流

文件的概念:一般指存储在外部介质上数据的集合。操作系统是以文件为单位对数据进行管理的,如果想找放在外部介质上的数据,必须先按文件名找到指定的文件,然后从文件中读取数据。

一个文件要有唯一的文件标识,以便用户识别和引用。文件标识包括3部分,分别为文件路径、文件名主干和文件后缀。

1、二进制文件

数据在内存中是以二进制形式存储的,如果不加转换地输出外存,就是二进制文件。

2、文本文件

文本文件又称为ASCLL文件,每一个字节放一个字符地ASCLL码。

文件指针:在C语言中,对文件的所有操作都必须依靠文件指针来完成。定义格式:

FILE* 变量名;

打开文件:fopen()函数,其返回值类型为文件指针。函数声明:

FILE * fopen(char* filename,char* mode);

关闭文件:fclose()函数,用于关闭文件,其返回值类型为int类型。函数声明:

int fclose(FILE *fp);

单字符读写文件

1、使用fputc()函数向文件写入字符,函数声明:

int fputc(char ch,FILE *fp);

ch表示写入的内容,fp表示一个文件指针,int表示函数返回值的类型为整数类型。

2、使用fgetc()函数读取文件中的字符,语法格式:

char fgetc(FILE *fp);

fp表示一个文件指针变量,char表示函数返回值的类型为字符类型。程序示例:

#include<stdio.h>int main()
{FILE *fp;int i=0;char arr[]="I Like C Program";fp=fopen("hello.txt","w");  //打开文件,若文件不存在则创建文件if(fp==NULL){printf("打开文件失败!\n");return -1;} while(arr[i]!='\0'){fputc(arr[i],fp);i++;}fclose(fp);return 0; }
#include<stdio.h>
#include<stdlib.h>
int main()
{FILE *fp;char ch;fp=fopen("hello.txt","r");  //打开文件,若文件不存在则创建文件if(fp==NULL){printf("打开文件失败!\n");exit(0);} ch=fgetc(fp);  //从文件中读取每个字符 while(ch!=EOF){printf("%c",ch);ch = fgetc(fp);}printf("\n");fclose(fp);return 0; } 

单行读写文件

1、使用fput()函数向文件写入字符串,函数声明:

int fputs(const char* str,FILE *file);

参数str表示指向待写入的字符串的字符指针;参数file表示文件指针,该指针指向需要写入字符串的文件;返回值类型int类型表示函数返回值的类型为整型。

2、fgets()函数读取文件中的字符串,或读取指定长度的字符串,函数声明:

char * fgets(char *buf,int maxCount,FILE *file);

参数buf指向用来存储文件数据的数组的地址;参数maxCount指明存储数据的大小,参数file是将要读取的文件的文件指针。

二进制读写文件

1、fwrite()函数向文件写入数据,以二进制的形式将数据写入文件,函数声明:

unsigned int fwrite(const void* str,unsigned int size,unsigned int count,FILE * file);

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu系统进入休眠后cuda初始化报错

layout: post # 使用的布局&#xff08;不需要改&#xff09; title: torch.cuda.is_available()报错 # 标题 subtitle: ubuntu系统进入休眠后cuda初始化报错 #副标题 date: 2023-11-29 # 时间 author: BY ThreeStones1029 # 作者 header-img: img/about_bg.jpg #这篇文章标题背…

嵌入式设备与PC上位机通信协议设计的几点原则

嵌入式设备在运行中需要设置参数&#xff0c;这个工作经常由PC机来实现&#xff0c;需要为双方通信设计协议&#xff0c;有代表性协议是如下三种&#xff1a; 从上表可以看到&#xff0c;一般嵌入式设备内存和运算性能都有限&#xff0c;因此固定二进制是首选通信协议。 一&am…

基于深度学习的点云三维目标检测方法综述

论文标题&#xff1a;基于深度学习的点云三维目标检测方法综述 作者&#xff1a;郭毅锋&#xff11;&#xff0c;&#xff12;†&#xff0c;吴帝浩&#xff11;&#xff0c;魏青民&#xff11; 发表日期&#xff1a; 2023 1 阅读日期 &#xff1a;2023 11 29 研究背景&…

基于SpringCloud的动漫论坛

基于SpringCloud的动漫论坛《BOKI》 摘要&#xff1a;鉴于现如今的互联网网站的存在形式&#xff0c;网站内部有可能内嵌论坛&#xff0c;因此&#xff0c;该项目中实现一个整体的、可移植性强的插件式论坛&#xff0c;论坛就有可能突破ACG主题的限制&#xff0c;实现论坛与主…

ArkTS-取消标题与自定义标题栏

文章目录 取消标头自定义标题栏导入Resources自定义跳转动画关于底部tabBar导航文本输入(TextInput/TextArea)自定义样式添加事件可以是onChange可以是onSubmit List列表组件设置主轴方向 网格布局服务卡片-获取地理位置页面获取地理位置服务卡片获取地理位置 可以先看看&#…

将原生Spring项目中某些配置文件中的易变内容参数化

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

SpringBoot——Swagger2 接口规范

优质博文&#xff1a;IT-BLOG-CN 如今&#xff0c;REST和微服务已经有了很大的发展势头。但是&#xff0c;REST规范中并没有提供一种规范来编写我们的对外REST接口API文档。每个人都在用自己的方式记录api文档&#xff0c;因此没有一种标准规范能够让我们很容易的理解和使用该…

【机器学习 | 可视化系列】可视化系列 之 决策树可视化

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

联想SR660 V2服务器使用默认用户登录BMC失败

新到了一台服务器&#xff0c;使用默认用户登录BMC失败 登录失败提示&#xff1a;账号或密码错误 解决方案&#xff1a; 1、重置BMC 2、新增用户 开机后在出现 ThinkServer 界面按 F1&#xff0c;进入 BIOS 界面 进入 System Settings-BMC Configuration 菜单相关&#xf…

java学习part13Object类和常用方法

1.Object 2.常用方法 2.1clone() clone()就是深拷贝&#xff0c;创建一个同内容新对象。需要实现接口 2.2finalize()已废弃 类似于析构函数&#xff0c;在GC回收之前调用。 System.gc()强制调用gc&#xff0c;然后就能看到finalize()的输出 2.3equals() 对于引用类型可用。…

enote笔记法之附录2——5w1h2k关联词(ver0.22)

enote笔记法之附录2——5w1h2k关联词&#xff08;ver0.22&#xff09; 最上面的是截屏的完整版&#xff0c;分割线下面的是纯文字版本&#xff1a; 作者姓名&#xff08;本人的真实姓名&#xff09;&#xff1a;胡佳吉 居住地&#xff1a;上海 作者网名&#xff1a;EverSt…