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