1,文件的创建

1,creat函数:int creat(const char *path, int amode)
该函数在头文件 <io.h> 中。如果函数执行失败,返回 -1(但仅凭返回值,不能检测出错的原因)。
其中,参数path是所创建文件名称的字符串,参数amode用来指定访问的模式和标明该文件为二进制文件还是文本文件。一般情况下,生成一个标准存档文件时amode的值为0。

#include <stdio.h>
#include <io.h>int main()
{int h;char filename[20];printf("请输入要创建的文件名:");scanf("%s", filename);h = creat(filename, 0);if (h == -1)printf("文件已存在或路径错误!\n");elseprintf("文件创建成功!\n");return 0;
}

2,文件的删除

1,remove函数:int remove(const char *filename)
remove函数的作用是删除文件。如果执行成功,返回值为0;如果失败,返回 -1。其中filename是要删除的文件。该函数在<stdio.h>中。
注意:在执行remove函数前,首先要确定文件存在,之后要关闭该文件的指针,否则删除将出错。

#include <stdio.h>
int main()
{FILE *fp;fp = fopen("F:\\shao.txt", "r");fclose(fp);//关闭指向该文件的指针int h;h = remove("F:\\shao.txt")   ;if (h == 0)printf("delete successfully");else printf("fail to delete");return 0;
}

3,文件的重命名

1,rename函数:int rename(const char *oldname, const char *newname)
若重命名成功则返回0;否则返回值非0。该函数在<stdio.h>中。
注意:执行rename之前,要保证文件存在,且新文件名不能与已有的文件重复,且关于该文件的指针需要关闭,否则函数执行失败。

#include <stdio.h>
int main()
{FILE *fp;fp = fopen("F:\\shao.txt", "r");fclose(fp);int h;h = rename("F:\\shao.txt", "F:\\test.txt");if (h == 0)printf("change successfully");elseprintf("fail to change");return 0;
}

可以通过更改文件名的方式,改变文件的存储路径,此时相当于转移文件

4,文件的复制

#include <stdio.h>
#include <stdlib.h>
int main()
{FILE *in, *out;char ch, infile[30], outfile[30];scanf("%s%s", infile, outfile);//输入文件名 if ( (in = fopen(infile, "r")) == NULL){printf("infile error!\n");exit(0);}if ( (out = fopen(outfile, "w")) == NULL){printf("outfile error!\n");exit(0);}while ( !feof(in) )//文件未读完时 //feof函数值为1,表示文件读取结束;函数值为0,表示文件未读取结束 {ch = fgetc(in);//从in文件读取一个字符,赋给chfputc(ch, out);//将该字符写到out文件中 putchar(ch);}//循环结束,in文件里的所有字符都被写到out文件中,即完成复制 fclose(in);fclose(out);return 0;
}

5,将文件中字符串存到数组中

int m = 0;
while ( !feof(a) )ch[m ++] = fgetc(a);

6,文件的分割

#include <iostream>
#include <cstring>
using namespace std;void space()
{char ext[2][6] = {"1.txt", "2.txt"}; //分割后的文件名称unsigned long n, k, byte = 0;char filename[50] = "/Users/shaoyihao/Desktop/test.txt", temp[50];strcpy(temp, filename);FILE *in, *out;in = fopen(filename, "r");int i = 0, j = 0;while (filename[j] != '.') j ++;filename[j] = '\0'; //分离出拓展名之前的文件名out = fopen(strcat(filename, ext[i]), "w");//创建一个分割后的子文件名fseek(in, 0, SEEK_END); // 将指针定位到文件尾k = ftell(in); //用ftell得出当前指针(文件尾)到文件头的距离,得到的值即文件的大小(字节数)fseek(in, 0, SEEK_SET); //指针回到文件头cin >> n; //输入分割后单个文件的大小(单位为字节)for (int t = 1; t <= (int)k; t ++)//遍历整个文件{char ch = fgetc(in);fputc(ch, out);//输出到子文件中byte ++;if (byte == n)//分割出了一个文件{fclose(out); //关闭该文件byte = 0; strcpy(filename, temp);while (filename[j] != '.') j ++;filename[j] = '\0';out = fopen(strcat(filename, ext[++ i]), "w"); //打开下一个子文件}}fclose(in);
}
int main()
{space();return 0;
}

7,创建一个临时文件

可以通过tmpfile和rewind函数实现临时文件的创建,如果成功,该函数返回一个指向被创建的临时文件的流指针。如果文件未被创建,则返回 NULL。被创建的临时文件会在流关闭的时候或者在程序终止的时候自动删除。该函数在<stdio.h>中。
作用:实现将一些内容输入到文件中,再从文件中读取所输入的内容。

#include <iostream>
using namespace std;int main()
{FILE *fp;if ((fp = tmpfile()) == NULL) exit(0);//创建一个临时文件fputs("abcdefg", fp);rewind(fp);//回到临时文件的头部char ch;while ((ch = fgetc(fp)) != EOF)cout << ch << ' ';fclose(fp);return 0;
}

8,查找文件

利用头文件<dir.h>中的函数searchpath可以实现文件的查找。
函数原型:char* searchpath(char *filename),如果找到文件,则返回指向全路径名(字符串)的指针,否则返回NULL。

#include <iostream>
#include <dir.h>
using namespace std;int main()
{char filename[50];scanf("%s", filename);char *p = searchpath(filename);if (!p) printf("%s", p);else cout << "NotFound";return 0;
}

9,关闭打开的所有文件

函数在头文件<stdio.h>中

fcloseall();

知识点15:文件的高级应用相关推荐

  1. bash知识点:文件测试

    bash知识点:文件测试(测试文件是否存在,文件是某种类型) 单目测试-e file:测试文件是是否存在 -a file:测试文件是是否存在 -f file:测试是否为普通文件,是为真,否则为假 -d ...

  2. 基于NSString处理文件的高级类

    基于NSString处理文件的高级类 我已经把处理文件的类简化到了变态的程度,如果你还有更简洁的方法,请告知我,谢谢! 使用详情: 源码: // // NSString+File.h // Maste ...

  3. Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类

    Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...

  4. 文件处理,文件的三种打开模式,绝对路劲和相对路径,with管理网文件上下文,文件的高级应用,文件的修改,登陆注册。...

    1.文件处理 什么是文件处理:修改存储的信息. 什么是文件:操作系统提供的虚拟概念,存储信息(用二进制存储信息) 操作核心是:读和写. 1.1操作文件的流程: 1.打开文件流程:1.文件路径" ...

  5. 安卓开发知识点!这些Android高级必会知识点你能答出来几个?系列篇

    开头 作为一个40的人,能有面试机会是格外的珍惜,也分外的诚恳.没什么豪言壮语,雄心大志.没有狼性,社会把中年人打磨成了听话的舔狗. 感谢马爸爸旗下公司,给了我为数不多机会中一个,而且还是个相当好的位 ...

  6. 蚂蚁花呗1-5面(高级):分布式+MySQL+HashMap+线程池+MQ+Redis

    24小时新鲜出炉的阿里面经,已拿下offer,趁热和大家分享,依旧是咱们原来的文章风格,省略各种前情提要和勾搭过程,直击面试拷问细节. 蚂蚁花呗一面:技术面 线程池的工作原理,几个重要参数? 给了具体 ...

  7. 分享15个Python高级库,让初学者爱不释手

    为什么我喜欢Python 对于初学者来说,这是一种简单易学的编程语言:另一个原因:大量开箱即用的第三方库,正是 23 万个由用户提供的软件包使得Python真正强大和流行. 在本文中,我挑选了15个最 ...

  8. 【Linux系统管理】09 文件系统管理 高级文件系统管理

    一 文件系统管理 1.1 硬盘结构 1.1.1 硬盘的逻辑结构 每个扇区的大小事固定的,为512Byte.扇区也是磁盘的最小存贮单位.0 磁道,0 扇区 指的就是第一个磁道的第一个扇区.一般是磁盘的最 ...

  9. linux之文件的高级命令

    在我们日常系统运维中,经常需要利用shell写一些自动化脚本,这些脚本写的好坏很大程度上取决于linux的高级操作命令掌握的是否熟练,那么我们看看工作中使用频率最高的一些命令. cat -n a.tx ...

最新文章

  1. ColorMatrix 彩色矩阵
  2. 线段树 + 树形换根 + dfs序 ---- 离线启发式求解 (有点像树上启发式合并答案) F. Nearest Leaf
  3. 在MFC中使用AFXBEGINTHREAD的方法
  4. linux 使用dd命令 写入镜像文件到u盘
  5. MySQL-Btree索引和Hash索引初探
  6. 奇怪的问题,.Net 2.0发送邮件失败...
  7. lambda 和 std::function
  8. Docker容器的重启策略
  9. 运营级IOS一键签名程序源码 支持app超级签名一键分发平台
  10. 数组模拟乘法(大数乘法)
  11. css分页实例讲解,CSS 分页实例
  12. setContentView是如何把布局加上去的
  13. linux比较两个文件的内容,[Linux] 使用awk比较两个文件的内容
  14. 信号与线性系统管致中第六版pdf_2021年武汉工程大学834信号与系统考研全套
  15. 2022年电工杯A题高比例风电电力系统储能运行及配置分析参考代码
  16. 解决Matplotlib中Times New Roman字体无法改变字体
  17. 边缘计算(Edge computing) 简单介绍
  18. 计算机硬件系统维护经验与体会,计算机操作系统维护与优化的实训报告心得体会.docx...
  19. java循环引用 垃圾回收,深入解析Java垃圾回收机制
  20. Web站相关知识与Web程序的访问流程

热门文章

  1. iOS 【适配iPhone XR/iPhone XS Max】
  2. 性能测试报告包括哪些内容?模板范文哪里找?看这里
  3. HT1622 驱动程
  4. 2007武汉房地产数据分析报告
  5. 苏嵌//张福辉//2018.7.13
  6. java.exe,javac.exe,javaw.exe 是什么进程? (转载)
  7. python爬虫爬取高清图片——爬虫入门
  8. [野史乱弹]对一段历史的大胆臆测与还原 [暴笑转载]
  9. 说一说我在创建星球这10多天,在星球里干了啥?
  10. 自动客服功能的微信小程序