几种文件打开方式之间的区别
来源:互联网 发布:复古美颜相机软件 编辑:程序博客网 时间:2024/05/17 03:23
/*----------------------------------------------------------
说明:本程序的目的是通过一系列实例说明文件打开方式
w+ 、r+、a+的区别。请先运行一下看下效果,并分
别查看生成中的数据。
------------------------------------------------------------*/
#include <stdio.h>
/*函数:存取文件操作,pchFileName为文件名,pchMode为文件打开方式*/
FILE *fnpflFileOperation(char *pchFileName, char *pchMode);
/*函数:区分各种文件打开方式*/
void fnvDivisionOfEachMode();
/*函数:辨别r+和a+文件打开方式指针所指位置*/
void fnvPositionOfPoint();
main()
{
/*函数:区分各种文件打开方式*/
fnvDivisionOfEachMode();
/*函数:辨别r+和a+文件打开方式指针所指位置*/
fnvPositionOfPoint();
}
/*函数:存取文件操作,pchFileName为文件名,pchMode为文件打开方式*/
FILE *fnpflFileOperation(char *pchFileName, char *pchMode)
{
FILE *pflFile;
static int iCount = 0;
printf("/t-------%d-------/n/n", ++iCount);
pflFile = fopen(pchFileName, pchMode); /*以pchMode方式,打开pchFileName*/
if (pflFile == NULL){
printf("%s open error!/n/n", pchFileName);
//exit(0); /*为了查看效果,先把这里注释掉,以免自动退出*/
}else printf("%s OK!/n/n", pchFileName);
return pflFile; /*返回指向所打开文件的指针*/
}
/*函数:区分各种文件打开方式*/
void fnvDivisionOfEachMode()
{
FILE *pflFile;
/*---------------------------------------------------------------------
以w+方式打开test.txt, 最初文件不存在,创建并写入数据*/
pflFile = fnpflFileOperation("test.txt", "w+");
fprintf(pflFile, "1st:w+1234567890/n");
fclose(pflFile);
printf("Please check up the file!/n");
system("pause"); /*暂停,可以去查看test.txt中的数据*/
/*-------------------------------------------------------------------*/
/*---------------------------------------------------------------------
以r+方式打开radd.txt, 文件不存在,出错,将看到出错提示*/
pflFile = fnpflFileOperation("radd.txt", "r+");
fprintf(pflFile, "2nd:r+/n");
fclose(pflFile);
printf("Please check up the file!/n");
system("pause"); /*暂停,可以去查看radd.txt是否被创建*/
/*-------------------------------------------------------------------*/
/*--------------------------------------------------------------------
以a+方式打开aadd.txt, 最初文件不存在,创建并写入数据*/
pflFile = fnpflFileOperation("aadd.txt", "a+");
fprintf(pflFile, "4th:a+/n");
fclose(pflFile);
printf("Please check up the file!/n");
system("pause"); /*暂停,可以去查看aadd.txt中的数据*/
/*------------------------------------------------------------------*/
/*--------------------------------------------------------------------
以r+方式打开已存在文件test.txt ,在文件首写入数据并覆盖当前位置数据*/
pflFile = fnpflFileOperation("test.txt", "r+");
fprintf(pflFile, "5nd:r+/n");
fclose(pflFile);
printf("Please check up the file!/n");
system("pause"); /*暂停,可以去查看test.txt中的数据*/
/*------------------------------------------------------------------*/
/*--------------------------------------------------------------------
以a+方式打开已存在文件test.txt ,向文件追加数据*/
pflFile = fnpflFileOperation("test.txt", "a+");
fprintf(pflFile, "6th:a+/n");
fclose(pflFile);
printf("Please check up the file!/n");
system("pause"); /*暂停,可以去查看test.txt中的数据*/
/*------------------------------------------------------------------*/
}
/*函数:辨别r+和a+文件打开方式指针所指位置*/
void fnvPositionOfPoint()
{
int chReadAChar;
FILE *pflFile1;
/*以r+方式打开test.txt*/
pflFile1 = fnpflFileOperation("test.txt", "r+");
/*读取test.txt中数据,从文件首开始读取,将输入文件中所有字符*/
while (!feof(pflFile1)){
if ((chReadAChar = fgetc(pflFile1)) != EOF)
fputc(chReadAChar, stdout);
else printf("EOF!/n/n"); /*到达文件为的情况*/
}
fclose(pflFile1);
system("pause");
/*-------------------------------------------------------------------*/
/*以a+方式打开test.txt*/
pflFile1 = fnpflFileOperation("test.txt", "a+");
fseek(pflFile1, -1L, SEEK_CUR); /*指针回退一个字节长度,此句可注释掉查看效果*/
/*读取test.txt中数据,从文件尾前开始读取,不能输出文件中数据*/
while (!feof(pflFile1)){
if ((chReadAChar = fgetc(pflFile1)) != EOF)
fputc(chReadAChar, stdout);
else printf("EOF!/n/n"); /*到达文件尾的情况*/
}
fclose(pflFile1);
system("pause");
}
/*-------------------------------------------------------------------
总结:
由以上程序可以理解,w+、r+、a+之间的区别:
w+:首先创建一个文件,然后向里面写数据。如果此文件
已存在,则重新创建并将原来文件覆盖掉,原本的数
据将丢失。
r+:打开一个已存在的文件,但不重新创建。如果该文件
不存在,将会出错。文件打开后,指针指向文件首部
。如果向其写入数据,则将逐个覆盖当前位置数据。
a+:打开一个已存在的文件,但不重新创建。如果该文件
不存在,则进行创建。文件打开后,指针指向文件尾
部。如果向其写入数据,则写入的数据追加到原有数
据之后?
注:如果指针在文件尾不进行判断并停止读取的话,指针
将会回到文件首部继续读取数据。?
-------------------------------------------------------------------*/
- 几种文件打开方式之间的区别
- 文件打开的几种方式(c/c++/Windows)
- 文件打开的几种方式(c/c++/Windows)
- 文件打开的几种方式(c/c++/win32/mfc)
- fstream 几种打开文件的方式,方便以后用
- linux服务器之间传输文件的几种方式
- linux服务器之间传输文件的几种方式
- 主机与设备之间文件拷贝的几种方式
- linux服务器之间传输文件的几种方式详解
- python文件打开方式的区别
- 解析XML文件的几种方式和区别答
- Android 几种解析XML文件方式的区别
- 打开窗体的几种方式?
- 打开Editor的几种方式
- 快速打开cmd的几种方式
- Java 打开本地文件的几种方式
- javascript打开新窗口的几种方式
- C语言文件打开和二进制打开方式的区别
- Java获取各种常用时间方法
- 我想考计算机三级·
- 类中的成员使用
- python中设置字符编码
- 大一要结束了
- 几种文件打开方式之间的区别
- 最近无法总是来啊!
- photoshop超级技巧—工具面板技巧
- photoshop超级技巧—复制技巧
- photoshop超级技巧—选择技巧
- 看完我所有的文章你没有受触动就是一傻瓜!没前途!
- 排序算法.希尔排序&快速排序
- 学习web的总结
- JFreeChart教程