(Michael Kerrisk)Linux系统编程手册读书笔记(一)-----系统编程概念中的函数解析
2014-09-05 14:18
459 查看
系统编程概念章节中的函数解析
1.获取函数中省略号指定的参数:在函数体中声明一个va_list,然后用va_start()函数来获取参数列表中的参数,使用完毕后调用va_end()结束。
2.vfprintf()函数:将可变参数按照指定的格式打印到文件流中。
函数原型:int vfprintf(FILE *stream, char *format,va_list param)
参数:stream 表示将字符打印到的文件流;
format 表示指定的格式;
param 表示可变参数。
3.程序实例:
void usageErr(const char *format,...) { va_list argList; fflush(stdout); fprintf(stderr,"Usage:"); va_start(argList,format); vfprintf(stderr,format,argList); va_end(argList); fflush(stderr); exit(EXIT_FAILURE); }
4. vsnprintf()函数:将可变参数格式化输出到一个字符数组
函数原型:int vsnprintf(char *str,size_t size,const char *format,va_list ap)
参数:str 字符数组名称;
size 字符数组大小;
format 指定的格式;
va_list 可变参数。
5. snprintf()函数:将可变个参数按照一定的格式化成字符串,然后将其复制到str中。
函数原型:int snprintf(char *str,size_t size,const char *format,...)
参数:str 字符数组名称;
size 字符数组大小;
format 指定的格式。
6.程序实例:
static void outputError(Boolean useErr,int err,Boolean flushStdout,const char *format,va_list ap) { #define BUF_SIZE 500 char buf[BUF_SIZE],userMsg[BUF_SIZE],errText[BUF_SIZE]; vsnprintf(userMsg,BUF_SIZE,format,ap); if(useErr) snprintf(errText,BUF_SIZE,"[%s %s]",(err > 0 && err < MAX_ENAME) ? ename[err] : "?UNKNOWN?",strerror(err)); else snprintf(errText,BUF_SIZE,":"); snprintf(buf,BUF_SIZE,"ERROR %s %s\n",errText,userMsg); if(flushStdout) fflush(stdout); fputs(buf,stderr); fflush(stderr); }
相关文章推荐
- (Michael Kerrisk)Linux系统编程手册读书笔记(一)-----解析命令行选项
- Linux系统编程手册读书笔记——第3章 系统编程概念
- Linux系统编程手册一 :Linux系统基本概念。
- Linux系统中C语言编程创建函数fork()执行解析
- Linux系统进程控制编程(一)————基本概念和函数getpid的使用
- Linux系统环境下的Socket编程详细解析 (4)
- Linux系统调用之sysinfo函数解析
- Linux下C编程,子进程创建函数fork() 执行解析
- linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用
- linux系统编程之信号(二):一些信号发送函数和不同精度的睡眠
- Linux编程常用的函数(十一) 系统数据文件和信息
- linux系统编程之基础必备(七):read/write函数与(非)阻塞I/O的概念
- 【Linux的高级应用编程】TCP/IP网络编程函数解析
- Linux系统环境下的Socket编程详细解析
- linux系统编程之文件与I/O(六):fcntl 函数与文件锁
- Linux系统环境下的Socket编程详细解析 (2)
- Linux系统环境下的Socket编程详细解析
- UNIX(Linux)系统编程常用库函数说明
- GNU_linux编程指南读书笔记5 --访问系统信息
- Linux系统文件I/O编程(一)---open()等基本函数