C语言中对文件的输入输出

1.打开关闭文件

1.1用fopen函数打开数据文件

fopen函数的调用方法为:

fopen(文件名,使用文件方法);

//列如:
​
fopen("al","r");

使用文件方法如下:

文件使用方法 含义 如果指定的文件不存在
“r”(只读) 为了输入数据,打开一个已存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立新文件
“a”(追加) 向文本文件尾添加数据 出错
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输入数据,打开一个二进制文件 建立新文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(只读) 为了读和写,打开一个文本文件 出错
“w+”(只写) 为了读和写,建立一个新的文本文件 建立新文件
“a+”(追加) 为了读和写,打开一个文本文件 出错
“rb+”(只读) 为了读和写,打开一个二进制文件 出错
“wb+”(只写) 为了读和写,建立一个新二进制文件 建立新文件
“ab+”(追加) 为了读写打开一个二进制文件 出错

1.2用fclose函数关闭数据文件

关闭文件用fclose函数。fclose函数调用的一般形式为

fclose(文件指针);

//列如:
​
fclose(fp);

2.顺序读写数据文件

2.1怎样向文本读写字符

对文本文件读入或输出一个字符的函数

函数名 调用形式 功能 返回值
fgetc fgetc(fp) 从fp指向的文件读入一个字符 读成功,带回所读的字符,失败则返回文件结束标志EOF(即一1)
fputc fputc(ch,fp) 把字符ch写到文件指针变量fp所指向的文件中 输出成功,返回值就是输出的字符;输出失败,则返回EOF(即一1)

2.2怎么向文件读写一个字符串

读写一个字符串的函数

函数名 调用形式 功能 返回值
fgets fgets(str,n,fp) 从fp指向的文件读入一个长度为(n一1)的字符串,存放到字符数组str中。 读成功,返回地址str,失败则返回NULL
fputs fputs(str,fp) 把str所指向的字符串写到文件指针变量fp所指向的文件中 输出成功,返回0;否则返回非0值

说明: (1) fgets函数的函数原型为 char * fgets (char * str,int n,FILE * fp); 其作用是从文件读入一个字符串。调用时可以写成

fgets(str,n,fp);

(2)fputs函数的函数原型为 ​ int fputs (char * str,FILE* fp); 其作用是将str所指向的字符串输出到fp所指向的文件中。调用时可以写成

//例如:
fputs("China", fp);

fgets和 fgets这两个函数的功能类似于gets和 puts函数﹐只是gets和 puts以终端为读写对象,而fgets 和fputs函数以指定的文件作为读写对象。

2.3用格式化的方式读写文件

前面进行的是字符的输人输出,而实际上数据的类型是丰富的。大家已很熟悉用printf函数和scanf函数向终端进行格式化的输人输出,即用各种不同的格式以终端为对象输人输出数据。其实也可以对文件进行格式化输入输出,这时就要用fprintf函数和fscanf函数,从函数名可以看到,它们只是在printf和 scanf 的前面加了一个字母“f”。它们的作用与printf函数和scanf函数相仿,都是格式化读写函数。只有一点不同:fprintf和 fscanf 函数的读写对象不是终端而是文件。它们的一般调用方式为 ​                 ​​​​​​​fprintf(文件指针,格式字符串,输出表列);

        fscanf(文件指针,格式字符串,输入表列);

//例如:
fprintf (fp,"%d,%6.2f”,i,f);

2.4用二进制方式向文件读写一组数据

它们的一般调用形式为

fread(buffer,size,count,fp);

fwrite( buffer ,size,count,fp);

其中: buffer:是一个地址。对fread来说,它是用来存放从文件读入的数据的存储区的地址。对fwrite来说,是要把此地址开始的存储区中的数据向文件输出(以上指的是起始地址)。

size:要读写的字节数。

count:要读写多少个数据项(每个数据项长度为size)。

fp: FILE类型指针。

在打开文件时指定用二进制文件,这样就可以用fread和fwrite函数读写任何类型的信息﹐例如: ​ fread(f,4,10,fp);

3.随机读写数据文件

3.1文件位置标记的定位

(1)用rewind函数使文件位置标记指向文件开头

rewind函数的作用是使文件位置标记重新返回文件的开头,此函数没有返回值。

//列如
rewind(fp);

(2)用fseek 函数改变文件位置标记

fseek 函数的调用形式为

        fseek(文件类型指针,位移量,起始点)

//列如
fseek(fp,100L,0);

4.文件读写的出错检测

1.ferror函数

一般形式: ferror(fp);

如果ferror返回值为O(假),表示未出错;如果返回一个非零值,表示出错。

2.clearerr函数

clearerr的作用是使文件错误标志和文件结束标志置为0。假设在调用一个输入输出函数时出现错误, ferror函数值为一个非零值。应该立即调用clearerr(fp),使ferror(fp)的值变成0,以便再进行下一次的检测。

你可能感兴趣的:(c语言,开发语言)