基本文件操作

1.   fopen文件的打开操作

1.1函数原型

#include <stdio.h>

FILE *fopen( const char *fname, const char*mode );

参数1:fname 表示文件名(可以含有路径信息)

参数2:打开方式

返回值:FILE* 文件指针,

如果打开失败,就返回NULL(就是0)

1.2mode 打开方式

"r"   以“读”的方式打开一个文本文件(只能读)

"r+"  与"r" 的区别在于,增加了“写”

"rb"  以“读”的方式打开一个二进制文件(只能读)

"rb+" 与"rb"的区别在于,增加了“写”

"w"   以“写”的方式创建一个文本文件,如果这个文件已经存在,就会覆盖原来的文件

"w+"  与"w"的区别在于,增加了“读”

"wb"  以“写“的方式创建一个二进制文件

"wb+" 与"wb"的区别在于,增加了“读”

"a"   以“尾部追加”的方式打开一个文本文件, (只能写)

"a+"  以"a"的区别在于,增加了"读"

"ab"  以“尾部追加”的方式打开一个二进制文件, (只能写)

"ab+" 与"ab"的区别在于,增加了“读”

小结

打开方式,共1到3个字符。

第一个字符是 r、w或a

r 表示“读”,用于打开已经存在的文件

w 表示“创建”, 用于创建一个新文件,并能够“写”

a 表示“尾部追加”,并能够"写"

b, 只能写在第二位,表示打开的是二进制文件

+,只能写在最后,表示增加一个读或写的功能

例子:

       #include <stdio.h>

int main(void) {

       FILE *file;

       file = fopen("users1.txt", "r");

       if (file != NULL) {  //NULL就是0

              printf("文件users.txt打开成功! ");

       } else {

              printf("文件users.txt打开失败! ");

       }

       return 0;

}

2.   fclose文件的关闭操作

清理缓冲区,并释放文件指针

fclose(FILE*);

特别注意:

对文件执行写操作以后,并不会马上写入文件,而只是写入到了这个文件的输出缓冲区中!

只有当这个输出缓冲区满了,或者执行了fflush,或者执行了fclose函数以后,或者程序结束,

才会把输出缓冲区中的内容正真写入文件!

3. fgetc文件的读操作

函数原型:

 #include <stdio.h>

int fgetc( FILE *stream );

返回值:成功时,返回读到的字符,返回的是int类型(实际值是字符)(可以使用%c直接打印出来)

       失败或读到文件尾,返回EOF(就是-1)

作用:

从文件中读取一个字符

4. fputc写一个字符到文件

函数原型:

 #include <stdio.h>

 int fputc( int ch, FILE *stream );

注意:写入一个字符是在文件的头部写入,并且会覆盖原先的字符

如:若在有字符“hello”的文件中写入一个a,即fputc(‘c’,file)

       hello->>>>aello

 5.fputs 写一个字符串到文件中去

函数原型:

 #include <stdio.h>

 intfputs( const char *str, FILE *stream );

注意:

       与上一个类似,也是在文件头部写入,并且会覆盖之前的字符

6.  fprintf 往文件中写格式化数据

函数原型:

 #include <stdio.h>

 int fprintf( FILE *stream,  const char*format, ... );

如:

         fprintf(file1, "姓名:%s 年龄:%d ", name, age);

与上一个类似,也是在文件头部写入,并且会覆盖之前的字符

7.fscanf 格式化读取文件中数据

函数原型:

 #include <stdio.h>

 intfscanf( FILE *stream, const char *format, ... );

返回值:成功时,返回实际读取的数据个数

       失败时,返回 EOF (-1)

原文地址:https://www.cnblogs.com/yangjiquan/p/11368332.html