现在的位置: 首页 > 综合 > 正文

标准文件编程库(二)

2013年08月21日 ⁄ 综合 ⁄ 共 1070字 ⁄ 字号 评论关闭

 变长参数的传递:

Code:
  1. #include <stdarg.h>  
  2. int vprintf(const char *format, va_list ap);  
  3. int vfprintf(FILE *stream, const char *format, va_list ap);  
  4. int vsprintf(char *str, const char *format, va_list ap);  

这些函数完全等价于格式化输出函数,只是形式上采用固定参数代替变长参数,这样描述参数更加紧凑,这些函数常用于函数内部的功能实现。

例子:

设计函数 int PrintLog(FILE *stream, const char *pformat, ...),它按照pformat的内容,控制后继参数的数量和格式,并在文件流stream中输出。

Code:
  1. #include <stdarg.h>  
  2. #include <stdio.h>  
  3.   
  4. int PrintLog(FILE *pfile, const chart *pformat, ...) {  
  5. va_list _va_list;  
  6. char szBuf[1024];  
  7. if(pformat == NULL || pfile == NULL) return -1;  
  8. va_start(_va_lsit, pformat);  
  9. vsprintf(szBuf, pformat, _valist);  
  10. va_end(szBuf, pfile);  
  11. return 0;  
  12. }  
  13.   
  14. int main() {  
  15. PrintLog(stderr, "[%s] [%s] [%d] [%c]/n""This""is", 5, 'a');  
  16. PrintLog(stderr, "Error [%p] [%.2f] [%X]/n", NULL, 3.123, 100);  
  17. return 0;  
  18. }  

文件读写位置的定位:

Code:
  1. #include <stdio.h>  
  2. int fseek(FILE *stream, long int offset, int whence);  
  3. void rewind(FILE *stream);  
  4. long int ftell(FILE *stream);  

文件的错误与结束状态:

Code:
  1. #include <stdio.h>  
  2. int ferror(FILE *fp);  
  3. char buf[1024];  
  4. void clearerr(FILE *stream);  

 

抱歉!评论已关闭.