VC:va_list用法---隱含引數的使用方法
va_list用法---隱含引數的使用方法及IO使用說明
目的:
掌握VA_LIST用法
熟悉輸入/出的實質,要建立起IO的概念,避免輸入出停留在終端階段
設計到IO裝置,便一點設計到 阻塞、非阻塞、多路轉換 訊號驅動 非同步控制等
如果設計到檔案操作,需要注意 檔案鎖
#include<stdio.h>
#include<stdarg.h>
int sum(int n,...)//簡單求和的一個函式,n為需要求和的個數
{
int sum=0;
int i;
va_list va;
va_start(va,n);
for(i=0;i<n;i++)
sum+=va_arg(va,int);
va_end(va);
return sum;
}
int main()
{
printf("%d/n",sum(3,1,2,3));//簡單測試
return 0;
}
vfprintf
函式名: vfprintf
功 能: 格式化的資料輸出到指定的資料流中
用 法: int vfprintf(FILE *stream, char *format, va_list param);
函式說明:vfprintf()會根據引數format字串來轉換並格式化資料,然後將結果輸出到引數stream指定的檔案中,直到出現字串結束(‘/0’)為止。
關於引數format字串的格式請參 考printf()。
返回值:成功則返回實際輸出的字元數,失敗則返回-1,錯誤原因存於errno中。
#include
#include
#include
FILE *fp;
int vfpf(char *fmt, ...)
{
va_list argptr;
int cnt;
va_start(argptr, fmt);
cnt = vfprintf(fp, fmt, argptr);
va_end(argptr); return(cnt);
}
int main(void)
{
int inumber = 30;
float fnumber = 90.0;
char string[4] = "abc";
fp = tmpfile();
if (fp == NULL)
{
perror("tmpfile() call");
exit(1);
}
vfpf("%d %f %s", inumber, fnumber, string);
rewind(fp);
fscanf(fp,"%d %f %s", &inumber, &fnumber, string);
printf("%d %f %s/n", inumber, fnumber, string);
fclose(fp);
return 0;
}
