博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<C - 文件操作> 2017-12-05
阅读量:5264 次
发布时间:2019-06-14

本文共 5093 字,大约阅读时间需要 16 分钟。

01、文件操作1:

/*1.文件    保存数据      jpg  cpp txt    文件后缀不影响文件内容      后缀 告诉计算机怎么去打开文件2.文件操作的函数    文件指针 文件打开之后  指针指向文件3.文件加密解密    异或  ab    a^b ^b-->a    a--b-->c--b-->a    b作为密码       作业  用代码拷贝一个文件   文件1  拷贝另外一个文件2  txt练习    选做题 --> 课后了解一下 文件的加密和解密*/#include
int main(){ FILE *fp;//文件指针 FILE POINTER fp=fopen("1.txt", "w");//打开文件 /* 打开失败返回值为NULL 第一个 文件的位置 文件路径 第二个 打开方式 r read 读取 (只能打开一个已有的文件 没有打开失败) w write 写入 (如果文件存在 就把文件清空 如果文件不存在 新建文件) a append 追加 (已有文件后面追加新的内容 不清除原有内容) t 文本文件 txt 用文本方式写入 (可以不写) b 二进制文件 用二进制方式写入 (会乱码) + 可读写文件 打开一个可读写文件 打开方式 r 只读的方式打开文件 w 写入的方式打开 a 用追加的方式打开 rb rt rb+ 用只读的方式 去打开一个可读写的二进制文件 ab+ */#if 0 /* fgetc 在文件中读出一个字符 fputc 在文件中写入一个字符 作用 和参数 */ char arr[12] = "hello world"; for (int i = 0; i < 11; i++) { fputc(arr[i], fp); } fclose(fp);//保存文件 fp = fopen("1.txt", "r");//只读的方式打开 if (fp == NULL) { printf("文件打开失败"); getchar(); return 0; } int ch; //字符串末尾 '\0' 文件末尾 printf("文件内容是:\n"); while ((ch = fgetc(fp)) != EOF) { printf("%c", ch); }#elif 0 /* fgets 从文件中读取一个字符串 fputs 将一个字符串写入到文件夹 */ fputs("你好 未来", fp); fclose(fp);//保存文件 fp = fopen("1.txt", "r");//只读的方式打开 if (fp == NULL) { printf("文件打开失败"); getchar(); return 0; } printf("读出的字符串是:\n"); char arr[100]; fgets(arr, 100, fp);//读取字符串之后存放的位置 ,最多能读取多少 ,从什么地方读取 printf("%s", arr);#elif 1 /* fscanf 格式化写入 从文件中写入到程序 fprintf 格式化输出 从程序输出到文件 */ fprintf(fp,"今天%d月 %d号\n%s", 12, 5, "天气很好");//格式占位符 //char arr[10]; //sprintf(arr, "今天%d月%d号\n%s", 12, 5, "天气很好");//把后面的内容写入到数组中 fclose(fp);//保存文件 fp = fopen("1.txt", "r");//只读的方式打开 if (fp == NULL) { printf("文件打开失败"); getchar(); return 0; } int x, y; char arr[100]; //fprintf(fp, "今天%d月%d号\n%s", 12, 5, "天气很好"); //fscanf(fp,"%d%d\n%s", &x, &y, arr);//怎么写入 怎么读出 //printf("读出的数据是\t %d\t%d\t%s", x, y, arr); fscanf(fp,"%s", arr); printf("读出的数据是%s", arr); /* danny 70 70 50 xk 60 70 90 xingkong 90 67 80 */#endif /* ftell fseek rewind 文件指针的原理 fp指向文件 文件内部指针(光标) 指向读取的位置 feof 表示是否文件指针是否移动到文件末尾 (一般用来判断二进制文档) feof(fp) 返回1 表示读到文件末尾 返回0 还没有读取到文件末尾 */ rewind(fp);//将文件指针指向文件开头 long address = ftell(fp);//返回文件指针离文件开头的偏移量 fseek(fp, address, SEEK_SET);//定位函数 根据偏移量 将文件指针移动到 //SEEK_SET 文件开头 //SEEK_CUR 文件指针当前位置 //SEEK_END 文件末尾 getchar(); fclose(fp);//关闭文件 return 0;}

02、文件操作2

#include
/*fread 从文件读取一块数据 存入程序中某个变量或者数组fwrite 从程序中写入文件*/typedef struct node{ int data; char name[10]; double weight;}NODE,*PNODE;int main(){#if 0 FILE *fp = fopen("2.txt", "wb"); if (fp == NULL) return 0;//判断是否打开失败 NODE arr[10] = { { 0, "未来", 3.1415926 }, {
1, "白羊", 3.1415926 } }; for (int i=2; i < 10; i++) { arr[i] = arr[0]; arr[i].data = i; } fwrite(arr, sizeof(NODE), 10, fp); //arr 要写入的数据存放的位置 取水点 //sizeof(NODE) 写入数据的单位(字节) 一次性取多少 //10 个数 取的次数 //fp 文件指针 放水点#elif 1 FILE *fp = fopen("2.txt", "rb"); if (fp == NULL) return 0;//判断是否打开失败 NODE brr[10]; fread(brr, sizeof(NODE), 10, fp); //从文件中读出来 -->fp //读到brr中 for (int i = 0; i < 10; i++) { printf("%d\t%s\t%lf\n", brr[i].data, brr[i].name, brr[i].weight); //(brr + i)->data; }#endif fclose(fp); getchar(); return 0;}

 

03、加密软件:

#include
int main(){ FILE *fp = fopen("文档.txt", "rb"); FILE *fp2 = fopen("加密文档.txt", "wb"); char arr[2] = { 0 }; while (!feof(fp)) { fread(arr, sizeof(char), 1, fp);//读取文档 arr[0] ^= 123; fwrite(arr, sizeof(char), 1, fp2);//写入加密文档 } fclose(fp); fclose(fp2); getchar(); //remove("文档.txt"); //解密文件 fp = fopen("加密文档.txt", "rb"); fp2 = fopen("解密文档.txt", "wb"); while (!feof(fp)) { fread(arr, sizeof(char), 1, fp);//读取文档 printf("%s\n", arr); arr[0] ^= 123; fwrite(arr, sizeof(char), 1, fp2);//写入加密文档 } fclose(fp); fclose(fp2); getchar(); return 0;}

 

04、解压软件:

 

<补课文件操作>:

/***  打开文件 -> FILE fopen(文件路径,打开方式);  (返回指针)*****/#include 
#include
int main(){ FILE *pFile = fopen("Danny.txt", "w"); // 定义文件指针 并打开文件 if (NULL == pFile) // 判断打开文件 { printf("打开文件失败!"); exit(0); // 退出程序 } // 第一个参数:要写入数据的地址 // 第二个参数:要写多大 // 第三个参数:你要写多少次 // 第四个参数:指向FILE结构体指针 fwrite("夏七好可爱!!!", 13, 1, pFile); //fwrite("夏七好可爱!!!", 1, 13, pFile); // // 比方说 你要从一个文件读出东西 可是你不知道有多少个字节 怎么读写 char strtext[1024] = { 0 }; int i = 0; fseek(pFile, 4, SEEK_SET); while (strtext[i] == fgetc(pFile) != EOF) { i++; } printf("读出的数据:%s\n", strtext); fclose(pFile); // 关闭文件 getchar(); return 0;}

 

转载于:https://www.cnblogs.com/guijin/p/8351861.html

你可能感兴趣的文章
2015/8/4 告别飞思卡尔,抛下包袱上路
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
C# GC 垃圾回收机制
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>