基本概念
文本文件
二进制文件
文件定义
ANSI C文件处理函数
文件打开与关闭
文件打开fopen函数
TAG:文件,ANSI C文件处理函数,文件打开与关闭,文件打开fopen函数TEXT:在C语言中,文件的打开操作是通过fopen函数来实现的,此函数的声明在“stdio.h”中,原型如下:FILE * fopen (const char *path, const char *mode);函数形式参数说明如下:const char *path ——文件名称,用字符串表示;const char *mode ——文件打开方式,同样用字符串表示。函数返回值——FILE类型指针。如果运行成功,fopen 返回文件的地址,否则返NULL。提示: 注意检测fopen函数的返回值,防止打开文件失败后,继续对文件进行读写而出现严重错误。文件名称一般要求为文件全名,文件全名由文件所在目录名加文件名构成。例如文件8_4.C存储在C驱动器的temp目录中,则文件所在目录名为“c:\temp”,文件名为“8_4.C”,文件全名为“c:\temp\8_4.C”。如果用字符串来存储文件全名,语句如下:char szFileName[256]=“c:\\temp\\8_4.c”fopen函数允许文件名称仅仅为文件名,那么此文件的目录名由系统自动确定,一般为系统的当前目录名。假设ctest.c中包括如下的程序语句:FILE *fpFile;
fpFile =fopen(“C:\\a.txt”, “w+”);编译连接后形成可执行程序ctest.exe。无论ctest.exe在什么目录下运行,都会准确的打开C盘根目录下的a.txt文件。但是如果包括如下的程序语句:FILE *fpFile;
fpFile =fopen (“a.txt”, “w+”);则文件“a.txt”的位置则与ctest.exe所在的目录有关。假设Ctest.exe存储在c:\tc目录下,执行下面的dos命令:c:\>cd c:\tc
c:\tc>Ctest
则在c:\tc目录下创建了名为a.txt的文件。但是如果执行下面的dos命令:c:\>cd c:\
c:\>C:\TC\ctest
则在c:\目录下创建了名为a.txt的文件。因此在确定文件名称时,要非常注意。提示: 注意文件名称的格式要求路径的分割符为“\\”,而不是“\”,因为在C语言中“\\”代表字符\。例如“C:\\Test.dat”根据不同的需求,文件的打开方式有如下几种模式:1) 只读模式2) 只写模式3) 追加模式4) 读写模式牋牋牋?char *mode 含义 注释 牋牋牋牋牋?“r”?只读 打开文本文件,仅允许从文件读取数据 牋牋牋牋牋?“w”?只写 打开文本文件,仅允许向文件输出数据 牋牋牋牋牋?“a”?追加 打开文本文件,仅允许从文件尾部追加数据 牋牋牋牋牋?“rb” 只读 打开二进制文件,仅允许从文件读取数据 牋牋牋牋牋?“wb” 只写 打开二进制文件,仅允许向文件输出数据 牋牋牋牋牋?“ab” 追加 打开二进制文件,仅允许从文件尾部追加数据 牋牋牋牋牋?“r+” 读写 打开文本文件,允许输入/输出数据到文件 牋牋牋牋牋?“w+” 读写 创建新文本文件,允许输入/输出数据到文件 牋牋牋牋牋?“a+” 读写 打开文本文件,允许输入/输出数据到文件 牋牋牋牋牋?“rb+”读写 打开二进制文件,允许输入/输出数据到文件 牋牋牋牋牋?“wb+”读写 创建新二进制文件,允许输入/输出数据到文件 牋牋牋牋牋?“ab+”读写 打开二进制文件,允许输入/输出数据到文件
牋牋?提示:注意文件打开模式参数为字符串,不是字符。另外,对不同的操作系统或不同的C语言编译器,文件打开模式参数可能不同。
REF:.txt,只读模式.txt,只写模式.txt,追加模式.txt,读写模式.txt
只读模式
TAG:文件,ANSI C文件处理函数,文件打开与关闭,文件打开fopen函数,文件打开模式,只读模式TEXT:只能从文件读取数据,也就是说只能使用读取数据的文件处理函数,同时要求文件本身已经存在。如果文件不存在,则fopen的返回值为NULL,打开文件失败。由于文件类型不同,只读模式有两种不同参数。“r”用于处理文本文件(例如.c文件和..txt文件),“rb” 用于处理二进制文件(例如.exe文件和.zip文件)。
REF:.txt
只写模式
TAG:文件,ANSI C文件处理函数,文件打开与关闭,文件打开fopen函数,文件打开模式,只写模式TEXT:只写模式;只能向文件输出数据,也就是说只能使用写数据的文件处理函数。如果文件存在,则删除文件的全部内容,准备写入新的数据。如果文件不存在,则建立一个以当前文件名命名的文件。如果创建或打开成功,则fopen返回文件的地址。同样只写模式也有两种不同参数,“w”用于处理文本文件,“wb”用于处理二进制文件。
REF:.txt
追加模式
TAG:文件,ANSI C文件处理函数,文件打开与关闭,文件打开fopen函数,文件打开模式,追加模式TEXT:
追加模式;一种特殊写模式。如果文件存在,则准备从文件的末端写入新的数据,文件原有的数据保持不变。如果此文件不存在,则建立一个以当前文件名命名的新文件。如果创建或打开成功,则fopen的返回此文件的地址。其中参数“a”用于处理文本文件,参数“ab”用于处理二进制文件。
REF:.txt
读写模式
TAG:文件,ANSI C文件处理函数,文件打开与关闭,文件打开fopen函数,文件打开模式,读写模式TEXT:
读写模式:可以向文件写数据,也可从文件读取数据。此模式下有如下的几个参数:“r+”,“rb”:要求文件已经存在,如果文件不存在,则打开文件失败。“w+”和“wb+”:如果文件已经存在,则删除当前文件的内容,然后对文件进行读写操作;如果文件不存在,则建立新文件,开始对此文件进行读写操作。“a+”和“ab+”如果文件已经存在,则从当前文件末端的内容,然后对文件进行读写操作;如果文件不存在,则建立新文件,然后对此文件进行读写操作。
REF:.txt
文件关闭fclose函数
TAG:
TEXT:在C语言中,文件的关闭是通过fclose函数来实现。此函数的声明在“stdio.h”中,原型如下:int fclose (FILE *stream);
函数形式参数说明如下:FILE *stream ——打开文件的地址。函数返回值 ——int 类型,如果为0,则表示文件关闭成功,否则表示失败。.文件处理完成之后,最后的一步操作是关闭文件,保证所有数据已经正确读写完毕,并清理与当前文件相关的内存空间。在关闭文件之后,不可以再对文件进行读写操作,除非再重新打开文件。例13-2 打开名为“a.txt”的文件,并向文件输出字符串“TestFile”,然后关闭文件,同时在屏幕上输出fclose的返回值。#include "stdio.h"
void main()
{
FILE *fpFile;
int nStatus=0;
If((fpFile=fopen("a.txt","w+"))==NULL)
{
printf(“Open file failed!\n”);exit(0);
}
fprintf(fpFile,"%s","TestFile");
nStatus=fclose(fpFile);
printf("%d",nStatus);
}
提示:注意在文件处理的最后调用fclose函数关闭文件。在关闭文件之后,不可再对文件进行读写操作。
文件读写
字符的读写
TAG:文件,ANSI C文件处理函数,文件读写,字符的读写TEXT:
fputc与fgetc函数和标准输入输出函数getchar与putchar类似,其在“stdio.h”中的原型如下:int fputc (int c, FILE *stream);
int fgetc (FILE *stream);
fputc函数的作用是从当前文件位置开始向文件输出一个字符。函数形式参数说明如下:int c ——准备输出的字符。FILE *stream ——文件地址,为FILE *类型变量。函数返回值 ——int 类型。如果返回值为- 1(EOF),则表示字符输出失败,否则返回值为c,即与输出的字符相等。fgetc函数的作用是从当前文件位置读取一个字符。函数形式参数说明如下:FILE *stream ——用读写模式和只读模式打开的文件地址,为FILE *类型变量。函数返回值 ——int 类型。如果返回值为- 1,表示已经读到文件末尾,否则返回读到的字符。例13-3 从键盘读取字符,并输出到“text.txt”文件中。#include "stdio.h"
void main()
{
FILE *fpFile;
char c;
if((fpFile=fopen("c:\\test.txt","w"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
while((c=getchar())!='Q')
fputc(c,fpFile);
fclose(fpFile);
}
程序运行结果如下:输入:This is a test txt file!
Ok!
Q
文件c:\test.txt的内容如下:This is a test txt file!
Ok!
例13-4 模拟DOS系统的TYPE命令,在屏幕上显示文件的内容。#include "stdio.h"
void main()
{
FILE *fpFile;
char szFileName[20];
int c;
printf("Please input the file name:\n");
scanf("%s",szFileName);
if((fpFile=fopen(szFileName,"w+"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
while((c=fgetc(fpFile))!=EOF)
putchar(c);fclose(fpFile);
}
程序运行结果如下:输入c:\test.txt
输出:This is a test txt file!
Ok!
例13-5 模拟DOS系统的 COPY命令,实现文件复制。#include "stdio.h"
void main()
{
FILE *fpFrom,*fpTo;
char szFromFile[20];
char szToFile[20];
int c;
printf("Please input the from file name:\n");
scanf("%s",szFromFile);
printf("Please input the to file name:\n");
scanf("%s",szToFile);
if((fpFrom=fopen(szFromFile,"r"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
if((fpTo=fopen(szToFile,"w"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
while((c=fgetc(fpFrom))!=EOF)
fputc(c,fpTo);
fclose(fpFrom);
fclose(fpTo);
}
REF:.txt
数值的读写
TAG:文件,ANSI C文件处理函数,文件读写,数值的读写TEXT:
另外,一般的C编译系统中还提供了字(Word)的输入输出函数,即一次读写一个字(两个字节)的信息,其在“stdio.h”中的原型如下:int getw (FILE *stream);
int putw (int w, FILE *stream);
getw 函数的作用是从文件读取一个字信息,函数的形式参数如下:FILE *stream ——文件地址;函数返回值 ——如果成功读取,则返回当前读入的信息,否则返回EOF;例如下面的程序:int b;
FILE *fp;
..
b=getw(fp);
putw 函数的作用是向文件写一个字信息。函数的返回值为当前写入的信息,为一个整数。如果成功,与输入参数w的值相等,否则返回EOF。putw函数的作用将一个字的信息输出到文件中,函数的形式参数如下:FILE *stream ——文件地址;int w ——整型数据;函数返回值 ——如果成功,与输入参数w的值相等,否则返回EOF。例如下面的程序: int b;
FILE *fp;
…b=putw(b,fp);
REF:.txt
格式化读写
TAG:文件,ANSI C文件处理函数,文件读写,格式化读写TEXT:
文件输入输出函数中提供了与scanf和printf类似的函数——fscanf和fprintf,其在“stdio.h”中的原型如下:int fprintf (FILE *stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
对比int printf (const char *format, ...);
int scanf (const char *format, ...);
发现,文件输入输出函数中仅仅多了形式参数FILE *stream,即文件地址,其他的形式参数完全相同。例如:scanf(“%d”,&d)的作用是从键盘中读取一个整型数据到变量d中。fscanf(stream,“%d”,&d) 的作用是从当前打开的文件中读取一个整型数据到变量d中。例12-6 从键盘读入5位同学的姓名、数学成绩、物理成绩和化学成绩,并计算总分后输出到文本文件“student.dat”中。#include "stdio.h"
void main()
{
FILE *fpFile;
float fPhyscial,fMath,fChemical;
float fTotal;
char szName[20];
int i;
if((fpFile=fopen("student.dat","w"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
printf("Name\tPhyscial\tMath\tChemical\n");
for(i=0;i<3;i++)
{
scanf("%s%f%f%f",szName,&fPhyscial,&fMath,&fChemical);
fTotal=fPhyscial+fMath+fChemical;
fprintf(fpFile,"%s\t%2.2f\t%2.2f\t%2.2f\t%2.2f\n",szName,fPhyscial,fMath,fChemical,fTotal);
}
fclose(fpFile);
if((fpFile=fopen("student.dat","r"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
printf("Name\tPhyscial\tMath\tChemical\tTotal\n");
while(!feof(fpFile))
{
fscanf(fpFile,"%s%f%f%f",szName,&fPhyscial,&fMath,&fChemical,&fTotal);
printf("%s\t%2.2f\t\t%2.2f\t%2.2f\t%2.2f\n",szName,fPhyscial,fMath,fChemical,fTotal);
}
}
程序运行结果如下:输入John 78.50 85.50 90.00
Bob 89.50 91.00 82.00
Lili 82.50 90.00 87.00
输出John 78.50 85.50 90.00 254.00
Bob 89.50 91.00 82.00 262.50
Lili 82.50 90.00 87.00 259.50
REF:.txt
块的读写
TAG:文件,ANSI C文件处理函数,文件读写,块的读写TEXT:
文件输入输出函数中还提供了块的输入输出函数,即将内存中的一段信息作为一个整体进行输入输出操作,其在“stdio.h”中的原型如下:size_t fread (void *ptr, size_t size, size_t n, FILE *stream);
size_t fwrite (const void *ptr, size_t size, size_t n,
FILE *stream);
其中size_t在“stdio.h”中的定义如下typedef unsigned size_t;
函数的形式参数如下:void *ptr ——数据在内存中的首地址。可以为任何类型的指针变量。在fread函数中此参数为输出参数,必须输入有效的内存地址,并有足够的内存空间;在fwrite函数中,其为输入参数,仅仅要求输入有效的内存地址。size_t size ——块数据的大小,以字节为单位。size_t size ——块数据的数量,以字节为单位。FILE *stream ——已经打开文件的地址。函数的返回值——size_t类型。如果函数运行成功,则返回块数据的大小,否则返回0。此函数的主要应用在如下几个方面:1) 简单变量的读写;2) 数组的读写;3) 结构体变量的读写。首先介绍应用上述函数读取简单变量。例如:char c;
int n;
float f;
double d;
FILE *fp;
/*写数据*/fwrite(&c,sizeof(char),1,fp);fwrite(&n,sizeof(int),1,fp);fwrite(&f,sizeof(float),1,fp);fwrite(&d,sizeof(double),1,fp);/*读数据*/fread (&c,sizeof(char),1,fp);fread (&n,sizeof(int),1,fp);fread (&f,sizeof(float),1,fp);fread (&d,sizeof(double),1,fp);…其次介绍函数在数组读写方面的应用。由于数组具有连续的存储空间,数据连续存放,如果一个一个元素的读写,效率低下。而使用块读写函数实现整体的读写,可以到大幅度提高文件读写速度。例如下面的代码。char szText[50];
double dArray[20];
FILE *fp;
/*写数据*/fwrite(szTexr,sizeof(char),50,fp);fwrite(dArray,sizeof(double),20,fp);/*读数据*/fread (&c,sizeof(char),1,fp);fread (szTexr,sizeof(char),50,fp);fread (dArray,sizeof(double),20,fp);例12-7 从键盘读取10个整型数据存储到文件中,然后再从文件中读取数据,并输出到屏幕。#include <stdio.h>
int main()
{
FILE *fpFile;
int nArray[10];
int i ;
if((fpFile=fopen("data.dat","w"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
i=0;
while(i<10)
{
scanf("%d",&nArray[i]);
i++;
}
fwrite(nArray,sizeof(int),10,fpFile);
fclose(fpFile);
getchar(); /*暂停*/return 0;
}
程序的运行结果如下输入:1 2 3 4 5 6 7 8 9 0
下面的程序是读取数据的代码。#include <stdio.h>
int main()
{
FILE *fpFile;
float fArray[10];
int i ;
if((fpFile=fopen("data.dat","r"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
i=0;
fread(fArray,sizeof(float),10,fpFile);
while(i<10)
{
printf("%7.2f",fArray[i]);
i++;
}
fclose(fpFile);
getchar(); /*Pause */
return 0;
}
程序运行结果如下:输出:1 2 3 4 5 6 7 8 9 10
块读写函数最重要应用在于读取结构体类型数据。结构体类型变量中包含若干成员变量,对于结构体变量的操作,需要分别对各个成员变量进行操作。例如下面的程序:struct Point
{
double x;
double y;
double z;
}oPoint;
FILE *fp;
…fscanf(fp,“%f%f%f”,& oPoint.x, & oPoint.y,, & oPoint.z);fprintf(fp,“%f%f%f”,oPoint.x, oPoint.y,, oPoint.z);…结构体变量的各成员变量在内存中是连续存放的,因此具备使用块读写函数的条件,上述代码改写后如下:struct Point
{
double x;
double y;
double z;
}oPoint;
FILE *fp;
…fread(&oPoint,sizeof(struct Point),1,fp);
fwrite(oPoint,sizeof(struct Point),1,fp);
…例12-8 从文件中读取坐标信息,并在屏幕上绘制多边形。#include <math.h>
#include <stdio.h>
#include <graphics.h>
struct Point
{
double x; /*x坐标*/double y; /*y坐标*/double z; /*z坐标*/};
/*全局变量*/int GraphDriver; /*图形设备的驱动程序ID */int GraphMode; /*图形模式ID *//*图形模式初始化函数*/void Initialize(void);
MyMoveto( const struct Point* pPoint)
{
moveto(pPoint->x,pPoint- >y) ;
}
MyLineto(const struct Point* pPoint)
{
lineto(pPoint->x,pPoint- >y) ;
}
int main()
{
struct Point oPoint ;
FILE *fpFile;
int bFirst=1;
if((fpFile=fopen("point.dat","r"))==NULL)
{
printf("Open file failed!\n");
exit(0);
}
Initialize(); /* 将当前的系统输出模式调整为图形模式*/while(!feof(fpFile))
{
fread(&oPoint,sizeof( struct Point ),1,fpFile);
if(bFirst)
{
MyMoveto(&oPoint);
bFirst=0;
}
else
MyLineto(&oPoint);
}
fclose(fpFile);
getchar(); /*暂停 */closegraph(); /*将当前的系统输出模式调回文本模式,为图形库函数 */return(0);
}
/* 将当前的系统输出模式调整为图形模式*/void Initialize(void)
{
int ErrorCode; /* 错误状态信息*/GraphDriver = DETECT; /* 要求系统自动检测,DETECT为符号常量,在graphics.h 定义*//*调用图形库函数initgraph,将当前的系统输出模式调整为图形模式*/initgraph( &GraphDriver, &GraphMode, "" );ErrorCode = graphresult(); /*检测当前的图形输出状态,graphresult()为图形库函数*/if( ErrorCode != grOk )
{
/* 说明在将当前的系统输出模式调整为图形模式的过程中出现错误 *//* 打印错误信息 */printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );/* 退出应用程序 */exit( 1 );
}
}
程序运行结果如下:
fread和fwrite函数的特点是直接将内存中的一块信息以其二进制形式整体读写,因此主要用于二进制文件的读写。另外注意在使用fwrite函数将不同类型的数据写到同一文件中时,注意读取信息的顺序。例如利用下面的程序写一段数据到文件point.dat中。int main()
{
……fwrite(oPoints,sizeof( struct Point ),5,fpFile);
fwrite(&x,sizeof(double),1,fpFile);
……}
利用下面的程序可以正常的读取文件中的信息。#include <stdio.h>
int main()
{
……fread(oPoints,sizeof( struct Point ),5,fpFile);
fread(&x,sizeof(double),1,fpFile);
…….}
但是如果将语句fread(oPoints,sizeof(structPoint ),5,fpFile)和fread(&x,sizeof(double),1,fpFile) 的顺序调换,将造成数据读取失败。
REF:.txt,C13_4_4.jpg
字符串的读写
TAG:文件,ANSI C文件处理函数,文件读写,字符串的读写TEXT:
在文件输入输出函数中还提供了与gets与fputs类似的字符输入输出函数,其原型如下:char * fgets (char *s, int n, FILE *stream);
int fputs (const char *s, FILE *stream);
fgets函数的形式参数如下:char *s ——有效内存地址,以便可以存储从文件读取的字符串。int n ——读取字符串的长度,确定从文件中读取多少个字符。实质上,此函数从文件中读取n-1个字符到当前的字符串中,然后自动添加字符串结束符‘\0’。但是如果此文件中一行长度小于n,则到此行的换行符为止,并将此换行符读取到字符串中。FILE *stream ——文件地址函数返回值——字符串首地址,如果函数运行成功,则返回s的值;否则则返回NULL。fputs 函数的形式参数如下:const char *s ——有效的字符串,此字符串中不包括‘\n’。int n ——字符串长度。实质上,在向文件输出信息时,并不输出‘\0’。FILE *stream ——文件地址。函数返回值 ——整型数据,如果函数运行成功,则返回0;否则返回EOF。下面的程序实现了将一个字符串“Hello”写入文件,或从文件中读取一个字符串的方法。char szText[1024];
szText=”Hell0”;FILE *fp;
…fputs (szText,strlen(szText),fp);
..
fget(szText,1024,fp);/*读入一行*/
文件定位函数
TAG:文件,ANSI C文件处理函数,文件定位函数TEXT:
文件可以理解为一个完整的数据流,因此可以将“数据流”分为文件头、文件尾和文件主体三个部分。在C语言中通过FILE类型指针描述文件流的位置,因此FILE类型指针又称为文件指针。
图1 文件定位在缺省情况下,文件的读取是按顺序进行的。在完成一段信息的读写之后,文件指针移动到其后的位置上准备读取下一次读写。在特殊情况下,需要对文件进行随机的读写,即读取当前位置的信息后,并不读取紧接其后的信息,而是根据需要读取特定位置处的信息。为了满足文件的随机读写操作,C语言中提供了文件指针定位函数。
REF:.txt,C13_5.jpg,fseek.txt,ftell.txt
fseek
TAG:文件,ANSI C文件处理函数,文件定位函数,fseek函数TEXT: 牋牋?fseek函数是最重要的文件定位函数,此函数在“stdio.h”中的原型如下:牋牋?int fseek (FILE *stream, long offset, int whence);
牋牋?函数的形式参数如下:牋牋?FILE *stream ——文件地址。牋牋?long offset ——文件指针偏移量。牋牋?int whence ——偏移起始位置。牋牋?函数返回值 ——非零值表示是成功,0表示失败。牋牋?在计算文件指针偏移量时,首先要确定其相对位置的起始点。相对位置的起始点分为如下三类:文件头、文件尾和文件当前位置,并定义可以用符号常量表示(表1)。
牋牋?表1 相对位置起始点
牋牋牋牋牋?相对位置起始点 符号常量牋牋 整数值牋?说明 牋牋牋牋牋?文件头牋牋牋?SEEK_SET牋牋牋?0牋牋 相对的偏移量的参照位置为文件头 牋牋牋牋牋?文件尾牋牋牋?SEEK_ END牋牋牋 2牋牋 相对的偏移量的参照位置为文件尾 牋牋牋牋牋?文件当前位置?SEEK_CUR牋牋牋? 1牋牋 相对的偏移量的参照位置为文件指针的当前位置
牋牋?文件偏移量的计算单位为字节,文件偏移量可为负值,表示从当前位置向反方向偏移。牋牋?提示: 由于运行DOS系统的PC机中,长整型数的有效范围为-231~231-1,因此DOS可以管理的最大文件为2048 MB=2GB牋牋?注意,fseek函数对文本文件和二进制文件的处理方式有所不同。对于二进制文件,可以获得准确的定位。对于文本文件要注意如下的问题,首先文件偏移量必须为0或者通过ftell函数获得的文件指针的当前位置,并且相对位置的起始点必须为SEEK_SET。牋牋?另外fseek将指针移动到文件的开始和结束位置时,产生一个文件状态标志,必须使用clearerr函数清除文件状态标志后,才可以继续读写此文件。牋牋?将文件指针移动到文件开始位置的程序如下:牋牋?FILE *fp;
牋牋?fseek(fp,0L,SEEK_SET);
牋牋?将文件指针移动到文件末尾位置的程序如下:牋牋?fseek(fp,0L,SEEK_END);
scription" ' Custom Parameter names (parameters set "on-the-fly" by the export) Public Const TcpHyperlin
rewind
TAG:文件,ANSI C文件处理函数,文件定位函数,rewind函数TEXT:rewind函数的作用是将当前文件指针重新移动到文件的开始位置,此函数在”stdio.h”中的原型:void rewind (FILE *stream);
函数的形式参数如下:FILE *stream ——文件地址。函数返回值 ——无此函数的作用相当于如下的程序,将文件指针移动到文件头,并清除状态标志。fseek(fp,0L,SEEK_SET);
clearerr(fp);
REF:.txt
ftell
TAG:文件,ANSI C文件处理函数,文件定位函数,ftell函数TEXT:
ftell函数的作用是获得文件指针的当前位置,此位置为相对于文件开始位置的相对偏移量,此函数在“stdio.h”中的原型:long ftell (FILE *stream);
FILE *stream——文件地址。函数返回值——运行成功,返回当前位置相对于文件开始的相对偏移量;否则返回-1L。