文件学习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 chargetline() + 1 {0};

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

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

//申请新的空间

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

char* buf2 = new chargetline() + strlen(content) + 1 {0};

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

int i = 0;

for (; i < pos; i++)

{

buf2i = buf1i;

}

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

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

{

buf2i++ = contentj;

}

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

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

{

buf2i++ = buf1j;

}

//移动文件光标到首部

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 str32 = "";

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 buf128 = "";

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;

}

相关推荐
袁小皮皮不皮9 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip
装不满的克莱因瓶9 小时前
【自动驾驶领域】学习 Cityscapes 数据集——城市街景语义理解的标准基准
人工智能·pytorch·python·深度学习·学习·机器学习·自动驾驶
清辞85310 小时前
产品经理需求推进流程
大数据·深度学习·学习·产品经理
YM52e11 小时前
鸿蒙PC ArkTS 声明合并问题深度解析与最佳实践
学习·华为·harmonyos·鸿蒙·鸿蒙系统
海兰11 小时前
【实用程序】电商销售分析仪表盘 — 从零搭建一个AI参与的全栈数据洞察系统
人工智能·学习·算法
ken223212 小时前
在 Libreoffice Calc中输入自定义表情字符时,需要保存之后,才能正常显示
学习
zwenqiyu12 小时前
P5283 [十二省联考 2019] 异或粽子题解
c++·学习·算法
编程圈子12 小时前
电机驱动开发学习2. 直流无刷电机工作原理
驱动开发·学习
MartinYeung512 小时前
[论文学习]大型语言模型(LLM)安全与隐私-基于善、恶、丑的深度分析
学习·安全·语言模型
什仙12 小时前
Mathcad Prime 的教程资料
学习·工具