C的I/O操作和数据格式化函数(二)

                      C的I/O操作和数据格式化函数(二)

 

/////*******在调用以下的函数后,进入文件写入进行中模式

//////将一指定字符写入文件流中
函数 int  fputc ( int c , FILE * stream ) ;
返回值:

若成功,则返回写入成功的字符;

若写入失败,则返回EOF。

函数说明:

      该函数会将参数c 转为unsigned char 后写入参数stream 指定的文件中。

 

 

//////将一指定的字符串写入文件内
函数 int  fputs ( const char * s , FILE  *  stream ) ;
返回值:

若成功,则返回写出的字符个数;

有错误发生,则返回EOF。

函数说明:

该函数用来将参数s所指的字符串写入到参数stream所指的文件内。

 

 

//////将内存指定的数据块写到文件流
定义函数 size_t  fwrite ( const void  * ptr , size_t  size , size_t  num , FILE *  stream ) ;
参数;

       ptr ,指向要写入到文件的数据的内存区;

size ,为要读取的数据块的大小(字节单位);

num ,要连续读取多少个这样大小的数据块

返回值:

返回实际写入的num数目。

函数说明:

该函数用来将ptr指向的缓冲区中的size * num个字节数据写入stream指向的文件流中。

/////*******文件写入模式

 

 

//////

函数 int  fflush ( FILE * stream ) ;
返回值:

成功返回0 ;

失败返回EOF,错误代码存于errno中。

函数说明:

    在文件写入模式时,才会迫使将缓冲区的数据写回磁盘中。

如果参数stream为NULL,fflush()会将所有打开的文件数据更新。

 

 

/////设置文件流的缓冲区

1. 函数 void  setbuf ( FILE * stream , char *  buf ) ;

参数:

stream  为指定的文件流;

buf     指向用户要指定的缓冲区的地址。如果参数buf为NULL指针,则为无缓冲IO。
函数说明:

 在打开文件流后,读取内容之前,调用setbuf()可以用来设置文件流的缓冲区为用户自定义的,而不是使用默认的缓冲区。 


2. setbuffer(设置文件流的缓冲区)作用完全同setbuf函数
    定义函数 void setbuffer(FILE * stream,char * buf,size_t size);
    函数说明 在打开文件流后,读取内容之前,调用setbuffer()可用来设置文件流的缓冲区。
    参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小。


3. setlinebuf(设置文件流为线性缓冲区)
    定义函数 void setlinebuf(FILE * stream);
    函数说明 setlinebuf()用来设置文件流以换行为依据的无缓冲IO。 

 

4. setvbuf(设置文件流的缓冲区)
    定义函数 int setvbuf(FILE * stream,char * buf,int mode,size_t size);
    函数说明 在打开文件流后,读取内容之前,调用setvbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小,参数mode有下列几种
    _IONBF 无缓冲IO
    _IOLBF 以换行为依据的无缓冲IO
    _IOFBF 完全无缓冲IO。如果参数buf为NULL指针,则为无缓冲IO。
    返回值

 

 

///////取得文件流的当前读写位置

函数 long  ftell( FILE *  stream ) ;

返回值:

当调用成功时,则返回目前的读写位置;

若有错误则返回-1,errno会存放错误代码。

函数说明:

该函数用来取得文件流当前的读写位置(值从0开始)。结合fseek可得一个文件的总字节数。


////__f为FILE结构指针

#define  ferror(__f)  ((__f)->flags & _F_ERR)  ///检查是否出错,值为非0,表有错;

#define  feof(__f)  ((__f)->flags & _F_EOF)  ///检查是否到达了文件末尾,值为非0,表是

#define  fileno(__f)   ((__f)->fd)  ////返回文件描述符

 

//////检查文件流是否到达了文件尾

函数 int  feof ( FILE *  stream ) ;
返回值:

到达了文件尾,则返回true ;

其他情况返回0 ,即false .

函数说明:

用来侦测是否读取到了文件尾。

 

 

///////返回文件流所使用的文件描述符
函数 int  fileno ( FILE *  stream ) ;

返回值:

返回文件描述词。

函数说明:

fileno( )用来取得参数stream指定的文件流所使用的文件描述词。
另一种方法:利用FILE的结构体,  stream->fd  即为文件描述符。

 

 

//////将文件描述符转为FILE结构指针

函数 FILE * fdopen ( int  file , const char *  mode ) ;

参数:

mode 字符串为文件的打开模式(参考fopen()),此模式必须和文件描述符file的读写模式相同。

返回值:

转换成功时 , 返回指向该流的文件指针;

失败则返回NULL ,并把错误代码存在errno中。

函数说明:

该函数会将文件描述符file,转换为对应的FILE类型指针后返回。

 

 

二.标出输入/输出

键盘、显示器操作函数

getc

getchar

gets

 

putc

putchar

puts

 

作者: houbangen   发布时间: 2010-10-14