文件操作之2_标准I/O库

来源:互联网 发布:大数据与网络安全 编辑:程序博客网 时间:2024/05/27 20:19

     在启动程序时,有三个文件是自动打开的,它们是stdin、stdout和stderr。它们都是在stdio.h头文件中定义的,分别代表着标准输入、标准输出和标准错误输出,与底层文件描述符0、1和2相对应。

本节将介绍标准I/O库中的下列库函数:

fopen、fclose

fread、fwrite

fflush-

fseek-

fgetc、getc、getchar

fputc、putc、putchar

fgets、gets

printf、fprintf和sprintf

scanf、fscanf和sscanf


1. fopen函数

函数原型:

     #include <stdio.h>

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

           fopen库函数类似于底层的open系统调用。它主要用于文件和终端的输入输出。fopen打开由filename参数指定的文件,并把它与一个文件流关联起来。mode参数指定文件的打开方式,它取下列字符串中的值:

"r"或"rb":以只读方式打开

"w"或"wb":以写方式打开,并把文件长度截断为零。

"a"或"ab":以写方式打开,新内容追加在文件为为尾。

"r+"或"rb+"或"r+b":以更新方式打开(读和写)

"w+"或"wb+"或"w+b":以更新方式打开,并把文件长度截断为零。

"a"或"ab"或"a+b":以更新方式打开,新内容追加在文件为为尾。

字母b表示文件是一个二进制文件而不是文本文件。


2. fread函数

函数原型:

    #include <stdio.h>

    size_t fread(void *ptr,size_t size,size_t nitems,FILE *stream);

         fread库函数用于从一个文件流里读取数据。数据从文件流strean读到由ptr指向的数据缓冲区里。fread和fwrite都是对数据记录进行操作,size参数指定每个数据记录的长度,计数器nitems给出要传输的记录的个数。它的返回值是成功读到缓冲区里的记录个数。


3. fwrite函数

函数原型:

     #include <stdio.h>

     size_t fwrite(const void *ptr,size_t size,size_t nitems,FILE *stream);

           fwrite库函数和fread函数有相似的借口。它从指定的数据缓冲区里读出数据记录,并把它们写到输出流中。它的返回值是成功写入的记录个数。


4. fclose函数

函数原型:

     #include <stdio.h>

     int fclose(FILE *stream);

         fclose函数关闭指定的文件流stream,使所有尚未写出的数据都写出。

程序实例:

fread.c

#include <stdio.h>
int main()
{
   size_t n,m;
   char buf[10];
   FILE *fp1,*fp2;
   fp1 = fopen("test1","r");
   fp2 = fopen("test2","w");
   n = fread(buf,sizeof(buf),1,fp1);
   fwrite(buf,sizeof(buf),1,fp2);
   exit(0);
}

程序运行前test1内容为 zhangxm ,test2中没有内容。

程序运行后test2中内容为:

zhangxm
^D^H

注:后面的乱码没有被解决。


0 0