文件学习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;

}

相关推荐
天天爱吃肉821837 分钟前
AI Agent时代你的经验值多少钱?
人工智能·python·功能测试·学习·汽车
hongyucai5 小时前
随意学习-模型工程:因子、隐空间、采样策略
学习
Amazing_Cacao9 小时前
CFCA精品可可产区风土体系(亚洲):彻底拒绝应试背诵,将感官复核作为检验真实物理差异的唯一铁律
学习
caimouse15 小时前
protoc-gen-c 支持 proto3 `optional` 关键字修改记录
c语言·学习
憧憬成为java架构高手的小白15 小时前
黑马八股--中间件学习之MQ(RabbitMQ)
学习·中间件
撩得Android一次心动16 小时前
Linux编程笔记4【个人用】
linux·笔记·学习
user-猴子17 小时前
让网页“活”过来 —— 用AI打造会自主学习的动态知识图谱
人工智能·学习·知识图谱
网络工程小王18 小时前
【HCIE-AI】10.pytorch模型迁移分析
人工智能·学习·华为·llama
魔城烟雨19 小时前
从零开始学习betaflight《3-硬件接口设计规范标准》
学习·设计规范
不言鹅喻21 小时前
HarmonyOS ArkTS 实战:实现一个单词背诵与英语学习应用
学习·华为·harmonyos