搜狗站长平台长沙网站制作公司在哪里

news/2025/10/8 14:00:11/文章来源:
搜狗站长平台,长沙网站制作公司在哪里,大圣网站建设,网站开发的自适应C语言文件操作 在C语言中#xff0c;文件操作主要是通过标准库函数来实现的。 今天有时间就来学习下一些常用的文件操作函数#xff1a; C 语言提供了一个 FILE 数据结构#xff0c;记录了操作一个文件所需要的信息。该结构定义在头文件stdio.h#xff0c;所有文件操作函…C语言文件操作 在C语言中文件操作主要是通过标准库函数来实现的。 今天有时间就来学习下一些常用的文件操作函数 C 语言提供了一个 FILE 数据结构记录了操作一个文件所需要的信息。该结构定义在头文件stdio.h所有文件操作函数都要通过这个数据结构获取文件信息。 struct _iobuf {char *_ptr; // 指向缓冲区当前位置的指针int _cnt; // 缓冲区中剩余的字节数char *_base; // 指向缓冲区起始位置的指针int _flag; // 文件状态标志如错误、文件结束等int _file; // 文件描述符或句柄int _charbuf; // 用于单字符缓冲int _bufsiz; // 缓冲区大小char *_tmpfname; // 临时文件名指针如果有 }; typedef struct _iobuf FILE; // 将结构体重命名为 FILE 类型 什么是文件指针 开始操作一个文件之前就要定义一个指向该文件的 FILE 指针相当于获取一块内存区域用来保存文件信息。 定义方式 FILE* fp;fopen()函数用来打开文件。所有文件操作的第一步都是使用fopen()打开指定文件。这个函数的原型定义在头文件stdio.h FILE* fopen(char* filename, char* mode);它接受两个参数。第一个参数是文件名(可以包含路径)第二个参数是模式字符串指定对文件执行的操作比如下面的例子中r表示以读取模式打开文件; 第一次运行如果没有这个文件程序会提示错误。如下所示所以要想以只读的形式打开这个文件那么这样文件要事先存在。我在桌面手动创建了这个文件。再次试验就可以成果打开。 第一次打开出错 第二次打开正常 打开文件之后我们试着用fread()来读取文件信息。 fread()函数用于一次性从文件读取较大的数据块主要用途是将文件内容读入一个数组适合读取二进制数据。它的原型定义在头文件stdio.h。 size_t fread(void* ptr, size_t size,size_t nmemb,FILE* fp);它接受四个参数 ptr数组地址。size每个数组成员的大小单位为字节。nmemb数组的成员数量。fp文件指针。 读取字节数可以用一个变量来接收 // 从文件中读取数据 BytesRead fread(buffer, sizeof(char), sizeof(buffer) - 1, fp); printf(读到字节数BytesRead %d\r\n,BytesRead);读取数据时候有可能遇到文件为空的情况这时候就需要检查是不是文件末尾。检查是否到文件末尾函数是feof feof 是 C 标准库中的一个函数用于检查文件是否已到达文件末尾EOFEnd of File。它通常与文件读写函数如 fread、fgets 等一起使用以便在读取文件时检测到文件末尾。 feof 函数原型 int feof(FILE *stream);参数解释 stream指向 FILE 结构的文件指针。 返回值 如果文件指针已到达文件末尾则返回非零值 真。否则返回零 假。 如果文本文件里面的内容是空的、那么读取到的数据字节数据应该是0。如图所示。 现在我试着网文件里写入一些信息。再尝试去读取信息 写入的信息是 This is a test txt. Hello world! end编写读取数据到buffer的代码 BytesRead fread(buffer, sizeof(char), sizeof(buffer) - 1, fp);printf(读到字节数BytesRead %d\r\n,BytesRead);if (BytesRead 0){if (feof(fp))//文件到达末尾返回非零的真值 {printf(空文件、到达文件末尾\n);}else if (ferror(fp)){perror(没读到数据、读取文件时出错);}fclose(fp);return -1;}buffer[BytesRead] \0;printf(文件内容: %s\n, buffer);读取信息入下所示 打开文件时正常: No error 读到字节数BytesRead 36 文件内容: This is a test txt. Hello world! end -------------------------------- Process exited after 0.04219 seconds with return value 0 请按任意键继续. . . fclose 是 C 标准库中的一个函数用于关闭已经打开的文件。关闭文件可以释放与该文件相关的资源并确保所有缓冲区中的数据被写入文件。 fclose 函数原型 int fclose(FILE *stream);参数解释 stream指向 FILE 结构的文件指针该文件指针指向要关闭的文件。 返回值 如果成功关闭文件返回0。如果发生错误返回 EOF通常为 -1 完整的代码如下 #include stdio.hint main(void) {FILE *fp; // 定义一个 FILE 类型的指针char buffer[256]; // 定义一个缓冲区用于存储读取的数据size_t BytesRead; // 定义读取到多少个字节// 打开一个文件用于读取fp fopen(example.txt, r);if (fp NULL){perror(打开文件时出错);return -1;}else{printf(打开文件正常\r\n);}// 从文件中读取数据BytesRead fread(buffer, sizeof(char), sizeof(buffer) - 1, fp);printf(读到字节数 BytesRead %zu\r\n, BytesRead);if (BytesRead 0){if (feof(fp)) // 文件到达末尾返回非零的真值{printf(空文件或到达文件末尾\r\n);}else if (ferror(fp)){perror(没读到数据读取文件时出错);}fclose(fp);return -1;}// 为缓冲区添加字符串结束符buffer[BytesRead] \0;printf(文件内容:\r\n%s\r\n, buffer);// 关闭文件if (fclose(fp) 0) // fclose 关闭成功返回0关闭失败返回EOF{printf(成功关闭文件\r\n);}else{perror(关闭文件时出错);}return 0; } 补充说明EOF C 语言的文件操作函数的设计是如果遇到文件结尾就返回一个特殊值。程序接收到这个特殊值就知道已经到达文件结尾了。 头文件stdio.h为这个特殊值定义了一个宏EOFend of file 的缩写它的值一般是-1。这是因为从文件读取的二进制值不管作为无符号数字解释还是作为 ASCII 码解释都不可能是负值所以可以很安全地返回-1不会跟文件本身的数据相冲突。 需要注意的是不像字符串结尾真的存储了\0这个值EOF并不存储在文件结尾文件中并不存在这个值完全是文件操作函数发现到达了文件结尾而返回这个值。 fopen打开文件模式可能情况 以下是 fopen 函数的所有可能模式及其详细解释包括注意事项 模式模式说明文件指针位置文件存在文件不存在读操作写操作注意事项r读模式文件开始读取文件返回 NULL允许不允许文件必须存在否则返回 NULL。w写模式文件开始文件内容被清空创建新文件不允许允许打开时会清空文件内容。a追加写模式文件末尾文件末尾追加创建新文件不允许允许写操作总是在文件末尾。r读写模式文件开始读取和写入返回 NULL允许允许文件必须存在否则返回 NULL。w读写模式文件开始文件内容被清空创建新文件允许允许打开时会清空文件内容。a读写模式文件末尾读取和追加创建新文件允许允许写操作总是在文件末尾。 注意事项 r 模式 只读模式如果文件不存在返回 NULL。因此在打开文件后必须检查文件指针是否为 NULL。 w 模式 只写模式打开文件时会清空文件内容。如果文件不存在则创建新文件。这种模式不允许读取文件内容。 a 模式 追加写模式文件指针总是指向文件末尾。即使使用 fseek 移动文件指针写入操作仍会在文件末尾。如果文件不存在则创建新文件。这种模式不允许读取文件内容。 r 模式 读写模式文件指针指向文件开始允许读取和写入。如果文件不存在返回 NULL。因此在打开文件后必须检查文件指针是否为 NULL。 w 模式 读写模式打开文件时会清空文件内容文件指针指向文件开始。如果文件不存在则创建新文件。这种模式允许读取和写入但注意文件内容会被清空。 a 模式 读写模式文件指针指向文件末尾允许读取和追加。如果文件不存在则创建新文件。尽管可以读取文件内容但写操作总是在文件末尾。 示例代码 以下是如何使用这些模式打开文件的示例代码 #include stdio.hvoid open_file(const char *filename, const char *mode) {FILE *fp fopen(filename, mode);if (fp NULL) {perror(打开文件失败);return;}printf(以模式 %s 成功打开文件\r\n, mode);// 关闭文件if (fclose(fp) 0) // fclose 关闭成功返回0关闭失败返回EOF{printf(成功关闭文件\r\n);}else{perror(关闭文件时出错);} }int main(void) {open_file(example_r.txt, r);open_file(example_w.txt, w);open_file(example_a.txt, a);open_file(example_r.txt, r);open_file(example_w.txt, w);open_file(example_a.txt, a);return 0; }上边代码运行后只会产生四个文件 有关文件操作的接口还有以下几个如果大家感兴趣可以点个在看我继续更新 fwrite()写入文件 fseek()移动文件指针到指定位置 ftell()获取文件指针当前位置 fgetc()从文件中读取一个字符 fputc()写入一个字符到文件中 fscanf()从文件中读取格式化输入 fprintf()按格式写入到文件中

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

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

相关文章

实用指南:[Harmony]网络状态监听

实用指南:[Harmony]网络状态监听pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

微网站建设企划书制作网站心得

转载:C设计实现日志系统 - 知乎 (zhihu.com) 日志系统几乎是每一个实际的软件项目从开发、测试到交付,再到后期的维护过程中极为重要的 查看软件代码运行流程、 还原错误现场、 记录运行错误位置及上下文等的重要依据。一个高性能的日志系统&#xff0c…

在线教育网站建设策划WordPress自定义icon

目录 图像识别简介 神经网络 感知器 前馈神经网络 自动编码器 受限玻尔兹曼机 深度卷积网络 理解图像内容以及图像含义方面,计算机遇到了很大困难。本章先介绍计算机理解图像教育方面 遇到的难题,接着重点讲解一个基于深度学习的解决方法。我们会…

1000th post Problem 1

原题链接:https://artofproblemsolving.com/community/c4h3685828_1000th_post P1解法: 注意到有 \(\sum_{i=1}^n \frac{a_i}{s-a_i}=\sum_{i=1}^n\left(\frac{s}{b_i}-1\right)=\sum_{i=1}^n \frac{s}{b_i}+\sum_{i…

下行经济周期,就应该做只能在下行周期里做的事情

正文经济下行的时候,不要想着逆势而上,而要想着做那些只有在下行周期里才能做的事情。大部分人在经济不好的时候,要么焦虑,要么抱怨,要么等待。但是这些经济不好的时候,真的都是所谓的 Rubbish Time(垃圾时间)…

WPF Prism.Wpf RegionManager

Install-Package Prism.Wpf; Install-Package Prism.DryIOC; <Window x:Class="WpfApp28.Views.MainWin"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="ht…

题解:AT_agc065_d [AGC065D] Not Intersect

很牛的题。 题意:很简单了,不再赘述。 做法: 首先需要一个 Raney 引理:对于整数序列 \(a\),若 \(\sum a = 1\),则有且仅有一个 \(a\) 的循环位移满足前缀和均大于 \(0\)。 来简单证明一下,首先不会有两个及以上…

uniapp滚动导航 - unique

下面是效果图下面是实现代码<template><view class="container"><!-- 顶部导航 --><view class="navbar"><viewv-for="(item, index) in navList":key=&quo…

公司网站运营淮北建网站

一、概念 Java 内存区域和内存模型是不一样的东西&#xff0c;内存区域是指 Jvm 运行时将数据分区域存储&#xff0c;强调对内存空间的划分。 而内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM &#xff09;是定义了线程和主内存之间的抽象关系&#xff0c;即 J…

三门网站制作峡江网站建设

背景&#xff1a;之前资产信息用网络接口进行数据推送&#xff0c;但是接口推送需要验证而且反应较慢。Kafak中间件提供了另一种可行的数据推送方式&#xff0c;它可以进行消息队列推送&#xff0c;且反应速度快。但是Kafka需部署在公网环境&#xff0c;并进行登录验证&#xf…

网站建设与维护视频教程篡改 网站 支付接口

面试经典&#xff08;4/150&#xff09;删除有序数组中的重复项 II 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c; 返回删除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须在 原…

滚动导航 - unique

下面是效果图下面是实现代码<!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><title>滚动导航 Demo</title><style>body {margin:…

windows剪切板工具

列表 不推荐 ditto 界面我不喜欢,作为一个前台交互软件,用户界面搞得这么小,图片都看不清。CrossPaste 还行,但是没有标签或者说分类。 也没有导出功能。 不知道为啥,窗口总是不置顶。 提供了多种类型,算是比较现…

C#基础:启用线程池执行并行任务

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做字素的网站wordpress get option

从各方面来看&#xff0c;互联网向 IPv6 的过渡是件很缓慢的事情。不过在最近几年&#xff0c;可能是由于 IPv4 地址资源的枯竭&#xff0c;IPv6 的使用处于上升态势。相应的&#xff0c;开发者也有兴趣确保软件能在 IPv4 和 IPv6 下工作。但是&#xff0c;正如近期 OpenBSD 邮…

P1545 [USACO04DEC] Dividing the Path G 题解

P1545 [USACO04DEC] Dividing the Path G 题解 最近开始快刷蓝紫黑了,做完会写题解交上来。 题目传送门 题意 一条长为 \(L(1 \le L \le 10^6 , 2 | L)\) 的线段上,给出 \(N(1 \le N \le 10^3)\) 个可能相交的子段 \…

AJ-Report - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

视频采集程序

项目结构:VideoCaptureApp.pro QT += core gui multimedia multimediawidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11win32 { LIBS += -L$$PWD/lib/SDL2/lib/x64 \-L$$PWD/lib/ffmpeg…

怎么做网站弄网盟wordpress qq微博

【客户行业】金属加工行业 【问题类型】薪酬体系/激励体系 【客户背景】 某大型金属加工企业位于河北地区&#xff0c;成立于2000年&#xff0c;隶属于某大型有色金属集团&#xff0c;是一家集科研、开发、生产、销售于一体的国有企业&#xff0c;人员达到1000人。经过多年…

50m专线做视频网站青羊区城乡建设网站

很多高手都喜欢使用“宏”命令来提高办公工作效率。但在 Microsoft Office 程序中使用宏时&#xff0c;总会弹出宏安全警告&#xff0c;这让使用者倍感麻烦。而如果把宏的安全级设置为“低”&#xff0c;就可以取消excel中宏安全提示框了&#xff0c;又增加了恶意代码和病毒攻击…