文件的有关操作

大城市里の小女人 提交于 2020-01-20 07:59:28

注意:在对文件进行具体操作时,必须遵守"**打开(创建)——读/写——关闭"**的操作流程。

常用的文件系统函数如下:

分类 函数名
打开文件 fopen()
关闭文件 fclose()
文件定位 fseek() (改变文件位置的指针位置)
rewind()(使文件位置重新置于文件开头)
ftell()(返回文件指针的当前值)
文件读写 fgetc()(从文件中读取一个字符)
fgetc()(把字符输出到指定文件)
fgets()(读取字符串)
fputs()(把字符串输出到指定文件)
getw()(从指定文件中读取一个字(int 型))
putw()(把一个字(int 型)输出到指定文件
fread()(从指定文件中读取该项数据)
fwrite()(把数据写到指定文件)
fscanf()(把指定文件按格式输入数据)
fprintf()(按指定格式将数据写到指定文件中)

一.文件的打开与关闭

1.使用 fopen() 函数即可打开文件,它的用法为:
FILE *fopen(char *filename, char *mode);

filename 为文件名(包括文件路径),mode为打开方式,它们都是字符串。

文件的使用方式 意义
r(read)
w(write)
a(append) 追加
t(text) 文本文件,可省略不写
b(binary) 二进制文本
+ 读和写

例如:

FILE *fp = fopen("demo.txt", "r");

表示以“只读”方式打开当前目录下的 demo.txt 文件,并使 fp 指向该文件。fp 通常被称为文件指针。

2.使用fclose关闭文件

int fclose(FILE *fp);

例如:

fclose(fp);

文件正常关闭时,fclose() 的返回值为0,如果返回非零值则表示有错误发生.

二.文件读写函数

1.fget()和fput().
fgetc 函数 :从指定文件读入一个字符。
函数原型为: `int fgetc(FILE *fp)`


fputc 函数:将一个字符写到指定的文件中,若写成功返回以输出字符,否则返回 EOF.
函数原型为:int fputc(char ch,FILE *fp)

2.fgets和fputs.

1.fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的函数原型为:

char *fgets ( char *str, int n, FILE *fp );

str 为字符数组,n 为要读取的字符数目,fp 为文件指针。

返回值:读取成功时返回字符数组首地址,也即 str;读取失败时返回 NULL;如果开始读取时文件内部指针已经指向了文件末尾,那么将读取不到任何字符,也返回 NULL

2.fputs() 函数用来向指定的文件写入一个字符串,它的函数原型为:

int fputs( char *str, FILE *fp );

写入成功返回非负数,失败返回 EOF


3.fscanf和fprintf.

fscanf:从指定的文件中格式化读入数据。其函数原型为:

int fscanf(FILE *fp,"格式化字符串",【输入项地址表】);

fprintf:格式化写数据到指定的文件中,函数原型为:

int fprintf(FILE *fp,"格式化字符串",【输入项地址表】);

fprintf() 返回成功写入的字符的个数,失败则返回负数。fscanf() 返回参数列表中被成功赋值的参数个数。

4.fread和fwrite.

fread:从指定文件读入一组数据

fread(buffer, size, count, file);

buffer 存放读入数据的内存首地址
size 每个数据项的字节数
count 数据项个数
file 文件类型的指针

fwrite:将一组数据写到指定的文件中

fwrite( buffer, size, count, file);

buffer 输出数据的首地址
size 每个数据项的字节数
count 数据项个数
file 文件类型的指针

三.文件定位

1.rewind函数。
rewind 函数:将文件的读写指针移动到文件的开头
void rewind(FILE *fp);
2.fseek函数。
fseek函数:用来将位置指针移动到任意位置
int fseek ( FILE *fp, long offset, int whence );

是将文件指针由whence地址移动到offset的地址。

3.ftell函数。
ftell函数:返回文件的当前读写位置,若出错返回(-1L)。
ftell(文件指针);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!