当前位置: 首页 > wzjs >正文

上海网站建设公司网站北京网站优化步骤

上海网站建设公司网站,北京网站优化步骤,搜不到自己的网站,游戏代理商在C语言的知识体系中,文件操作是极为关键的一环,它赋予了程序存储和读取外部数据的能力,对于开发各类实用程序至关重要。近期,借助课程的学习,我对C语言文件操作进行了系统且深入的学习,下面将我的学习心得…

在C语言的知识体系中,文件操作是极为关键的一环,它赋予了程序存储和读取外部数据的能力,对于开发各类实用程序至关重要。近期,借助课程的学习,我对C语言文件操作进行了系统且深入的学习,下面将我的学习心得和收获进行分享。

目录

一、文件操作基础概念

(一)文件类型

(二)文件指针

二、文件的打开与关闭

三、文件的顺序读写

(一)字符读写

(二)文本行读写

(三)格式化读写

(四)二进制读写

四、文件的随机读写

(一) fseek 函数

(二) rewind 函数

(三) ftell 函数

五、学习感悟


一、文件操作基础概念

(一)文件类型

文件主要分为程序文件数据文件。程序文件涵盖了可执行代码等内容,是程序运行的基础;数据文件则肩负着存储程序运行时所需处理或读取的数据的重任,常见的有文本文件二进制文件文本文件以字符形式存储数据便于人类阅读和编辑二进制文件则以二进制格式存储在存储和读取特定数据结构时效率更高。

(二)文件指针

在C语言中, FILE* 类型的指针扮演着关键角色,它用于指向文件,是后续对文件进行各种操作的“桥梁”。例如:


 

cFILE* pf = fopen("data.txt", "r");

上述代码中, pf 就是指向名为 data.txt 文件的指针, "r" 表示以只读方式打开文件。通过这个指针,我们可以对文件进行读取、写入等一系列操作。


二、文件的打开与关闭

文件的打开和关闭是进行文件操作的基础步骤。打开文件使用 fopen 函数,若成功执行,该函数会返回文件指针;若失败,则返回 NULL 。因此,为了确保程序的健壮性,打开文件后必须进行错误判断。示例如下:


 

c#include <stdio.h>int main() {FILE* pf = fopen("test.txt", "w");if (pf == NULL) {perror("fopen");return 1;}// 文件操作代码fclose(pf);pf = NULL;return 0;}

关闭文件时,我们需要使用 fclose 函数,并将文件指针置为 NULL ,这样可以有效防止野指针的产生。另外,文件路径的指定方式有绝对路径和相对路径。绝对路径完整地指明了文件在系统中的位置,而相对路径则是相对于当前工作目录的位置描述,在实际应用中可根据具体情况灵活选择。


三、文件的顺序读写

(一)字符读写

 fgetc 函数用于从文件流中逐个读取字符, fputc 函数则用于向文件流中写入字符。以下是一个向文件写入26个英文字母的示例:


 

c#include <stdio.h>int main() {FILE* pf = fopen("data.txt", "w");if (pf == NULL) {perror("fopen");return 1;}for (int i = 'a'; i <= 'z'; i++) {fputc(i, pf);}fclose(pf);pf = NULL;return 0;}

读取文件中的字符示例:


 

c#include <stdio.h>int main() {FILE* pf = fopen("data.txt", "r");if (pf == NULL) {perror("fopen");return 1;}int ch;while ((ch = fgetc(pf)) != EOF) {printf("%c ", ch);}fclose(pf);pf = NULL;return 0;}

(二)文本行读写

 fgets 函数能够读取文本行,它会将读取到的内容存储到指定的字符数组中,并且会保留换行符(如果有)。 fputs 函数则用于输出文本行到文件或标准输出。示例如下:

c// 写入文本行#include <stdio.h>int main() {FILE* pf = fopen("test.txt", "w");if (pf == NULL) {perror("fopen");return 1;}char str[] = "Hello, world!\nThis is a test line.";fputs(str, pf);fclose(pf);pf = NULL;return 0;}


 

c// 读取文本行#include <stdio.h>int main() {FILE* pf = fopen("test.txt", "r");if (pf == NULL) {perror("fopen");return 1;}char buffer[100];while (fgets(buffer, sizeof(buffer), pf) != NULL) {printf("%s", buffer);}fclose(pf);pf = NULL;return 0;}

(三)格式化读写

 fscanf  fprintf 函数类似于我们熟悉的 scanf 和 printf 不同之处在于它们是针对文件流进行格式化的输入和输出操作。例如,向文件中格式化写入数据:


 

c#include <stdio.h>struct Student {char name[20];int age;};int main() {FILE* pf = fopen("students.txt", "w");if (pf == NULL) {perror("fopen");return 1;}struct Student s = {"Tom", 20};fprintf(pf, "Name: %s, Age: %d", s.name, s.age);fclose(pf);pf = NULL;return 0;}

从文件中格式化读取数据:


 

c#include <stdio.h>struct Student {char name[20];int age;};int main() {FILE* pf = fopen("students.txt", "r");if (pf == NULL) {perror("fopen");return 1;}struct Student s;fscanf(pf, "Name: %s, Age: %d", s.name, &s.age);printf("Read: Name - %s, Age - %d\n", s.name, s.age);fclose(pf);pf = NULL;return 0;}

(四)二进制读写

 fread 和 fwrite 函数用于对文件进行二进制形式的读写,这在处理诸如结构体等复杂数据结构时非常实用。例如,将结构体数据以二进制形式写入文件:

c#include <stdio.h>struct Point {int x;int y;};int main() {FILE* pf = fopen("points.bin", "wb");if (pf == NULL) {perror("fopen");return 1;}struct Point p = {10, 20};fwrite(&p, sizeof(struct Point), 1, pf);fclose(pf);pf = NULL;return 0;}

从二进制文件中读取数据:

c#include <stdio.h>struct Point {int x;int y;};int main() {FILE* pf = fopen("points.bin", "rb");if (pf == NULL) {perror("fopen");return 1;}struct Point p;fread(&p, sizeof(struct Point), 1, pf);printf("Read: x - %d, y - %d\n", p.x, p.y);fclose(pf);pf = NULL;return 0;}

四、文件的随机读写

(一) fseek 函数

 fseek 函数允许我们根据给定的偏移量和起始位置来灵活定位文件指针例如,将文件指针从文件末尾向后退3个字节:

#include <stdio.h>
int main() {FILE* pf = fopen("data.txt", "r+");if (pf == NULL) {perror("fopen");return 1;}fseek(pf, -3, SEEK_END);// 后续操作fclose(pf);pf = NULL;return 0;
}

(二) rewind 函数

 rewind 函数的作用十分简洁明了,它能让文件指针迅速回到文件的起始位置,这对于需要重新读取文件内容的场景非常方便。示例如下:

c#include <stdio.h>int main() {FILE* pf = fopen("data.txt", "r");if (pf == NULL) {perror("fopen");return 1;}// 读取部分内容// 让文件指针回到起始位置rewind(pf);fclose(pf);pf = NULL;return 0;}

(三) ftell 函数

 ftell 函数可以获取文件指针相对于起始位置的偏移量,这在需要了解当前读取或写入位置的情况下很有用。例如:

c#include <stdio.h>int main() {FILE* pf = fopen("data.txt", "r");if (pf == NULL) {perror("fopen");return 1;}// 读取一些数据fgetc(pf);long offset = ftell(pf);printf("Current offset: %ld\n", offset);fclose(pf);pf = NULL;return 0;}

五、学习感悟

通过这段时间对C语言文件操作内容的学习,我对文件操作有了更为全面和深入的认识。从最基础的文件打开与关闭,到多种类型的读写操作,再到随机读写的灵活运用,每一个知识点都相互关联,构成了一个完整的知识体系。

在实际编写代码的过程中,我也遇到了不少挑战。比如,由于对文件指针的使用不够熟练,导致程序出现错误;对某些读写函数的参数理解存在偏差,使得数据读写不符合预期。但通过不断地调试代码、查阅资料以及向老师和同学请教,这些问题都逐步得到了解决。

文件操作在实际项目中的应用场景极为广泛,无论是数据的持久化存储、配置文件的读取,还是日志文件的记录等,都离不开文件操作技术。因此,后续我还需要通过更多的实际项目和练习,来进一步熟练掌握这部分知识,提高自己在文件操作方面的编程能力,以便更好地应对未来开发工作中的各种需求。


文章转载自:

http://yh6xjMMZ.hcrxn.cn
http://4hlGulA8.hcrxn.cn
http://GDqKUvU4.hcrxn.cn
http://UzbzzJTN.hcrxn.cn
http://hoqHtMxJ.hcrxn.cn
http://mqaqdnH7.hcrxn.cn
http://09pfi0iI.hcrxn.cn
http://JzWgBNq3.hcrxn.cn
http://AiKcISxw.hcrxn.cn
http://s4NtAJBn.hcrxn.cn
http://tvH8JSk0.hcrxn.cn
http://T8hoMz11.hcrxn.cn
http://sBbP1bQZ.hcrxn.cn
http://3afdu4Z3.hcrxn.cn
http://PjBhDmq2.hcrxn.cn
http://dTc3c0Ex.hcrxn.cn
http://1nKKQguQ.hcrxn.cn
http://JMJ0vmlZ.hcrxn.cn
http://3Q7eQ586.hcrxn.cn
http://x1bwfYSP.hcrxn.cn
http://utsTmQNO.hcrxn.cn
http://A3rZnFif.hcrxn.cn
http://NdEVt4Yg.hcrxn.cn
http://amBqiiCo.hcrxn.cn
http://08VAs9TF.hcrxn.cn
http://6MEn4puo.hcrxn.cn
http://PQcHXvgb.hcrxn.cn
http://yH7mnUXK.hcrxn.cn
http://cyJRxRzL.hcrxn.cn
http://SOrbgFT5.hcrxn.cn
http://www.dtcms.com/wzjs/713359.html

相关文章:

  • 做旅行网站好centos wordpress 500
  • 花都电子商务网站建设cnnic 是什么网站
  • 网站logo更换网站后台动态播放怎么做的
  • 网站建设方案案例榆林建设局网站
  • seo网站关键词快速排名html5 手机网站 模板
  • 网站做支付功能深圳闭环转运
  • 安防网站建设个人简历电子版免费
  • 网站怎么企业备案信息查询阳江人社局官网招聘
  • 广东注册公司在哪个网站申请家装设计师一定要懂软装吗
  • 0基础多久学会网站架构临淄网站制作首选公司
  • 石家庄网站制作公司哪家好网站录屏可以做证据吗
  • 苏州网站建设有限公司做网站后期费用
  • 做网站用php还是python福泉市建设局网站
  • 做网站收费 知乎犀牛云建设网站
  • 浏览器的网站通知怎么做小型装修公司店面装修
  • 建设手机版网站需要主机多少空间wordpress更换网站数据库
  • 购物商城网站建设方案长沙有什么好玩的游乐场
  • 网站建设栏目管理企业网站设计要点
  • visual studio网站开发教程网站制作公司哪里好
  • 分享设计的网站wordpress历史记录
  • 好看的企业网站模板重庆公司注销流程
  • seo是做网站源码还是什么专门做生鲜的网站
  • 浙江省住房建设局网站拼多多网站首页
  • 有电脑网站怎么做手机网站网址大全2345电脑版下载
  • 无锡做网站公司有哪些电话建设银行有没有全球门户网站
  • 网站图片设计怎样才能高大上生物公司网站建设
  • 宁波建设网站多少钱wordpress和django哪个好
  • 个人兼职网站建设微信网站搭建公司
  • 做蛋糕网站有哪些wordpress 源码 解读
  • 做网站需要准备的素材wordpress主题ux