2024-12-29 6年前的作业

news/2025/1/4 11:39:58/文章来源:https://www.cnblogs.com/zlr585/p/18646059

1

char a[10],b[]={"COPY"}; 2//定义字符数组a,b 3strcpy(a,b); 4//将b中的COPY复制到a中

2

文件操作是指在程序中读取、写入或修改文件的过程。文件操作在编程中非常重要,因为它允许程序与外部数据进行交互,保存和检索信息。C语言提供了一套标准的文件操作函数,下面是对文件操作的详细介绍:

1. 打开文件 fopen()

在进行文件操作之前,必须首先打开文件。fopen()函数用于打开文件,并返回一个文件指针,该指针后续将用于操作该文件。

c

Copy code

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

  • filename:要打开的文件名(路径可以是相对路径或绝对路径)。
  • mode:文件打开模式,决定了文件如何打开。常见的模式有:
    • "r":以只读方式打开文件,文件必须存在。
    • "w":以写入方式打开文件,若文件存在则覆盖,不存在则创建。
    • "a":以追加方式打开文件,若文件不存在则创建。
    • "r+":以读写方式打开文件,文件必须存在。
    • "w+":以读写方式打开文件,若文件存在则覆盖,不存在则创建。
    • "a+":以读写方式打开文件,若文件不存在则创建,写入时内容追加。

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); // 打开文件进行读取 if (fp == NULL) { printf("无法打开文件\n"); }

2. 关闭文件 fclose()

文件操作完成后,应当使用fclose()关闭文件,以释放资源并确保数据完整写入磁盘。

c

Copy code

int fclose(FILE *fp);

  • 返回值:0表示成功,EOF表示失败。

示例:

c

Copy code

fclose(fp); // 关闭文件

3. 读取文件内容 fread()

fread()用于从文件中读取数据,通常用于读取二进制文件。它一次可以读取多个数据项。

c

Copy code

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

  • ptr:指向存储读取数据的内存地址。
  • size:每个数据项的字节数。
  • count:要读取的数据项数。
  • stream:文件指针。

示例:

c

Copy code

FILE *fp = fopen("data.bin", "rb"); int buffer[10]; size_t bytesRead = fread(buffer, sizeof(int), 10, fp); printf("读取了 %zu 个整数\n", bytesRead); fclose(fp);

4. 写入文件内容 fwrite()

fwrite()用于将数据写入文件,通常用于写入二进制文件。它一次可以写入多个数据项。

c

Copy code

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

  • ptr:指向要写入的数据的内存地址。
  • size:每个数据项的字节数。
  • count:要写入的数据项数。
  • stream:文件指针。

示例:

c

Copy code

FILE *fp = fopen("data.bin", "wb"); int numbers[] = {1, 2, 3, 4, 5}; fwrite(numbers, sizeof(int), 5, fp); fclose(fp);

5. 文件指针位置操作 fseek(), ftell()

在文件中读取或写入时,文件指针会根据操作自动移动。可以使用fseek()ftell()手动控制文件指针的位置。

  • fseek():设置文件指针的位置。

    c

    Copy code

    int fseek(FILE *stream, long offset, int whence);

    • offset:偏移量。
    • whence:位置的起始点,常用的值有:
      • SEEK_SET:从文件开头开始计算。
      • SEEK_CUR:从当前位置开始计算。
      • SEEK_END:从文件末尾开始计算。
  • ftell():获取文件指针当前位置。

    c

    Copy code

    long ftell(FILE *stream);

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); fseek(fp, 10, SEEK_SET); // 将文件指针移动到文件开头后第10个字节 long pos = ftell(fp); // 获取当前文件指针位置 printf("当前文件指针位置:%ld\n", pos); fclose(fp);

6. 判断文件结尾 feof()

feof()用于检查文件指针是否已到达文件末尾,常用于循环读取文件中的内容。

c

Copy code

int feof(FILE *stream);

  • 如果到达文件末尾,返回非零值;否则返回0。

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); char ch; while ((ch = fgetc(fp)) != EOF) { // 使用fgetc读取字符 putchar(ch); } fclose(fp);

7. 错误处理 ferror()

ferror()用于检查文件流是否发生错误。

c

Copy code

int ferror(FILE *stream);

  • 如果发生错误,返回非零值;否则返回0。

示例:

c

Copy code

FILE *fp = fopen("data.txt", "r"); if (ferror(fp)) { printf("文件读取错误\n"); } fclose(fp);

常见文件操作流程

  1. 打开文件: 使用fopen()打开文件。
  2. 读写文件: 使用fread()fwrite()进行读写操作。
  3. 移动文件指针: 使用fseek()调整文件指针位置,使用ftell()获取当前位置。
  4. 检查文件末尾: 使用feof()判断是否到达文件末尾。
  5. 关闭文件: 使用fclose()关闭文件,确保文件保存并释放资源。

小结

文件操作是一个非常基础且重要的编程技能,特别是在处理大量数据或需要持久化数据时。C语言提供的文件操作函数非常灵活,可以处理文本文件和二进制文件的读取和写入。理解并熟练使用这些函数可以大大提升程序的功能性。

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

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

相关文章

Sola的2024年度总结

前言 2024 这一年对我来说确实意义非凡,很想写点东西来记录一下这一年我的经历,算是第一次写年度总结了。 简短的记录一下我这一年。 现在?未来? 回忆起大一下最后一节体育课,体育老师让每个人想一个词来描述这个上半年,我给出的答案是 : 迷茫 。 现在来看,这个答案贯穿…

洛谷 P11487 「Cfz Round 5」Gnirts 10——题解

洛谷P11487「Cfz Round 5」Gnirts 10传送锚点摸鱼环节 「Cfz Round 5」Gnirts 10 题目背景 English statement. You must submit your code at the Chinese version of the statement.In Memory of \(\text{F}\rule{66.8px}{6.8px}\). 题目描述 题面还是简单一点好。给定 \(n, …

基于高德地图API在Python中实现地图功能的方法

本文介绍在高德开放平台中,申请、获取地图API的Key的方法;同时通过简单的Python代码,调取API信息,对所得Key的可用性加以验证~本文介绍在高德开放平台中,申请、获取地图API的Key的方法;同时通过简单的Python代码,调取API信息,对所得Key的可用性加以验证。首先,我们进入…

活动对象----active object

一.preface 近期学习QPC框架,其核心之一就是 actvie-object,活动对象的出现是为了解决并发(阻塞、数据竞争)问题。笔者这里做一篇笔记,方便日后回顾。 二.What is "active object"活动对象的组成框架代码如下点击查看代码 typedef struct Active Active; typedef …

新的一年,我决定拆解一个蓝牙接收器

哈哈,容我介绍一下,如果大家对电子感兴趣,可以看一下下面的图片,会经常更新优秀的原创文章。再次感谢每一个努力的电子爱好者。今天我们来拆解一个蓝牙接收器,首先我们需要有一个直观的印象。下图就是我们这次需要拆解的对象。我再想这么小的接收器,电路是怎么放进去得呢…

jfianl 如何定时某个时间点执行一个任务

如果我们需要在某个点执行一个任务,可以用使用以下方法,首先在操作之间先明白思路 参考技术来源:https://jfinal.com/doc/9-2 第一步,先安装包,因为 这是第三方包: <dependency> <groupId>it.sauronsoftware.cron4j</groupId> <artifactId>cr…

Window平台下Visual Studio版本和Qt构建kit 以及OpenCV的对应关系

1、VS版本、MSVC版本、工具集的对应关系 参考https://www.cnblogs.com/lidabo/p/183977552、Qt中的构建kit和MSVC的对应关系 qt中使用对应版本的kit必须安装对应版本的VS才能使用3、OpenCV的VC17文件夹和VS版本的对应关系 OpenCV中的VC17文件夹就是指用的VS2022编译的库,visua…

题解:AT_abc386_d [ABC386D] Diagonal Separation

分析题面,发现题目求的是是否存在一个白点被 \((1, 1)\) 和任意一个黑点围成的矩形内。 先将所有黑点按 \(x\) 坐标排序。 枚举所有的白点。 找到所有横坐标不比该白点横坐标小的所有黑点的纵坐标的最大值所属点。如果该点的纵坐标小于该白点的纵坐标:(蓝点代表题目中的白点…

【Miscellaneous】一道高质量的杂项题,涉及暴破、Cloakify-python2、零宽、emoji-AES等知识点

引言 下半年很忙,好久不做题,趁2025元旦放假整理一道高质量的题目,怀念一下繁忙的2024年。 题目 考虑到某公司的不分享精神或许会有版权之类的争端,文件链接以后就不放了。 名称:happymd5 提示:有好多奇奇怪怪的MD5值,这是用来干什么的呢。 Writeup(WP)题目附件cipher…

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被

2025-01-01:优质数对的总数Ⅰ。用go语言,给定两个整数数组 nums1 和 nums2,分别长度为 n 和 m,以及一个正整数 k。 如果 nums1 数组中的元素 nums1[i] 能被 nums2 数组中的元素 nums2[j] 乘以 k 除尽,则称 (i, j) 为一个优质数对(其中 0 <= i <= n - 1,0 <= j …

高光谱图像选择波段的研究(转载)

高光谱图像选择波段的研究博文: 高光谱图像选择波段的研究 高光谱波段选择 LY-林雨    2016-08-25 12:08:45 发布免责声明:本文仅代表个人观点,如有错误,请读者自己鉴别;如果本文不小心含有别人的原创内容,请联系我删除;本人心血制作,若转载请注明出处 本文是根据 魏…

Webstorm 关闭 拼写错误

问题描述:cmd+,唤醒 设置把这个勾去掉就行