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

}

相关推荐
qq_284274059 分钟前
间歇运动机构与机械设计概论:棘轮与槽轮机构运动系数、零件失效与强度刚度准则、结构工艺性清根及标准件(含考点)
笔记·学习·平面·自动化·制造
和侧9 小时前
离子注入后为什么必须配套退火工艺?
笔记·学习
凛铄linshuo10 小时前
自动化测试:pytest第一个实例学习
学习·pytest
我命由我1234511 小时前
智能助手通用问答边界
人工智能·python·学习·ai·学习方法·ai编程·智能体
鬼手点金11 小时前
Agent 的学习机制:后训练、上下文学习与外部化学习
java·人工智能·git·学习·自动化·nanogpt
几个几个n11 小时前
LaTeX 入门学习
学习
想七想八不如1140813 小时前
元学习简单入门
人工智能·pytorch·python·深度学习·学习·机器学习
Awh-14 小时前
ARM 裸机开发 DAY11 学习笔记
arm开发·笔记·学习
2603_9695792816 小时前
U盘的系统备份怎样还原系统?详细步骤与注意事项
学习
知识分享小能手17 小时前
C学习教程,从入门到精通,C语言指针 —— 详细知识点总结(10)
c语言·开发语言·学习