文件的打开与关闭:
ANSIC规定使用fopen函数来打开文件,fclose来关闭文件
FILE * fopen ( const char * filename, const char * mode );
int fclose ( FILE * stream )
filename这个参数,填写的是文件路径,填写绝对路径和相对路径都行,第二个参数是打开方式
注意:"w"只写,下一次重新打开会清空原有数据
文件打开之后需要判断是否打开成功,可使用perror或者strerror,包含的头文件是<errno.h>
#include
int main ()
{
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
fclose (pFile);
}
return 0;
}
程序一运行会自动打开三个文件,stdin.stdout和sterr,所以windows环境下默认最多打开512个文件
Linux环境下打开文件的数量可以配置
读文件的实质是把磁盘的数据读到内存中,用数组存起来,读写使用的函数一般为fread和fwrite
char buf[1024]={0};
fread(buf,1,4,fp);
fread中的第一个参数是待写入的数据,第二个参数是元素大小,第三个元素是元素个数,最后一个是被读取的数据
char buf[1024]={0};
fwrite(buf,1,4,fp);
fwrite中的第一个参数是被读取的数据,第二个参数是元素大小,第三个元素是元素个数,最后一个是待写入的数据
文件的随机读写:
int fseek ( FILE * stream, long int offset, int origin );
fseek函数根据文件指针的位置和偏移量来定位文件指针
stream是句柄,offset表示的是偏移量,origin表示的是起始位置,源点
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ( "example.txt" , "wb" );
fputs ( "This is an apple." , pFile );
fseek ( pFile , 9 , SEEK_SET );
fputs ( " sam" , pFile );
fclose ( pFile );
return 0;
}
这里的SEEK_SET表示的是文件的开始位置
ftell函数,返回文件指针相对于起始位置的偏移量,偏移量是以字节为单位
rewind函数,作用是让文件指针的位置回到文件的起始位置