文件学习8

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

#include <assert.h>

#include <string.h>

#include <errno.h>

//回顾 文件内容插入格式

const char* filemane = "a.txt";

void writeread(const char* content)

{

FILE* f = fopen(filemane, "w");

fputs(content, f);

fclose(f);

}

size_t getline()

{

FILE* f = fopen(filemane, "r");

fseek(f, 0, SEEK_END);

fpos_t pos1;

fgetpos(f, &pos1);

fclose(f);

return pos1;

}

void insert(const char* content, int pos)

{

FILE* f = fopen(filemane, "r+");

char* buf1 = new char[getline() + 1] {0};

fread(buf1, 1, getline(), f);

printf("%s\n", buf1);

//申请新的空间

//char* buf2 = new char[getline() +strlen(content)+ 1] {0};

char* buf2 = new char[getline() + strlen(content) + 1] {0};

//将pos前的数据写入到新的空间中

int i = 0;

for (; i < pos; i++)

{

buf2[i] = buf1[i];

}

//将新数据写入到新的空间中

for (int j = 0; j < strlen(content); j++)

{

buf2[i++] = content[j];

}

//将原内存剩下数据写入到新的空间中

for (int j = pos; j < getline(); j++)

{

buf2[i++] = buf1[j];

}

//移动文件光标到首部

fseek(f, 0, SEEK_SET);

fwrite(buf2, 1, getline() + strlen(content), f);

delete[] buf1;

fclose(f);

}

int main()

{

//writeread("hi,weabf");

printf("file size is %lld\n",getline());

insert("jack,", 3);

return 0;

}

//文件位置操作小结

//fseek(FILE*.int,int)//移动光标的位置

//fgetpos(FILE*,fpos_t*)//

//

//

int main()

{

FILE* f = fopen("a.txt", "w");

//1,在光标3的位置,替换内容为C

fpos_t pos = 3;

fsetpos(f, &pos);

fputc('c', f);

//2,尝试读取第5个字符位置的内容

pos = 7;

fsetpos(f, &pos);

int c = fgetc(f);

printf("%c", c);

//3,尝试读取当前位置后所有字符串的内容直到\n;

char str[32] = "";

fgets(str, 32, f);

printf("%s", str);

fclose(f);

}

//1.3 rewind的应用示例//将光标重置在文件首部

int main()

{

//打开D盘文件中的a.txt文件

FILE* f = fopen("d:\\a.txt", "r");

assert(f != NULL);

//读取一行数据

char buf[128] = "";

fgets(buf, 128, f);

printf("%s", buf);

//读取第一行第一个字符

rewind(f);

int c = fgetc(f);

printf("%c", c);

fclose(f);

}

//从文件中查找字符的函数

FILE* filp;

int findm(char c)

{

rewind(filp);

while (!feof(filp))

{

if (c == fgetc(filp))

{

return 1;

}

}

return 0;

}

int main()

{

filp = fopen("d:/a.txt", "r");

printf("%d\n", findm('2'));

printf("%d\n", findm('4'));

printf("%d\n", findm('8'));

printf("%d\n", findm('3'));

}

// 文件本身的操作

//1 删除文件 remove//成功返回0 其他失败

//2 文件重命名 rename//成功返回0 其他失败

int main()

{

//删除a.txt文件

int ret=remove("a.txt");

printf("%d", ret);

//将D盘中的a.txt重命名为a;

ret = rename("d:/a.txt", "d:/a");

return 0;

}

//文件的错误处理

//1 clearerr;

//重置给文件流的错误和EOF结束标志

//重置EOF->0;

int main()

{

FILE* f = fopen("a.txt", "w");

fputs("hi.1234\n", f);

rewind(f);

printf("%s", fgetc(f));

clearerr(f);

fclose(f);

}

//2 文件结束 feof

//3 文件错误 ferror

//4 打印错误 perror//打印最近IO操作的错误信息//#include<errno.h>

//void perror(9)

int main() {

FILE* f = fopen("d:\\a.txt", "r");

fputc('H', f);// 只读流不能写, errno=9

//errno == 0;

// errno为0时,表示无错误信息

printf("errno: %d-> %s\n", errno, strerror(errno));

//perror("error");

/*

printf("ferror() = %d\n", ferror(f));

clearerr(f);

printf("ferror() = %d\n", ferror(f));*/

fclose(f);

return 0;

}

相关推荐
三品吉他手会点灯17 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
sakiko_18 小时前
UIKit学习笔记1-创建项目(使用UIKit)、使用组件
笔记·学习
生信碱移18 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
星幻元宇VR20 小时前
VR航空航天科普设备【VR时空直升机】
科技·学习·安全·生活·vr
_李小白20 小时前
【android opencv学习笔记】Day 2: Mat类(图片数据结构体)
android·opencv·学习
harder32121 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
程序猿乐锅1 天前
【Tilas|第三篇】多表SQL语句
数据库·经验分享·笔记·学习·mysql
徐某人..1 天前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm
AOwhisky1 天前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
光影少年1 天前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs