c语言 - printf()及scanf()系列函数

c语言 - printf()及scanf()系列函数
printf()、fprintf()、sprintf()、snprintf()、vprintf()、vfprintf()、vsprintf()、vsnprintf();
scanf()、fscanf()、sscanf()、vscanf()、vfscanf()、vsscanf()

printf()系列

头文件:stdio.h、stdarg.h

  • int printf(const char *fmt, ...);:输出至stdout
  • int fprintf(FILE *stream, const char *fmt, ...);:输出至stream
  • int sprintf(char *str, const char *fmt, ...);:输出至str
  • int snprintf(char *str, size_t size, const char *fmt, ...);:输出至str,写入至多size个字符(包括’\0’字符)
  • int vprintf(const char *fmt, va_list ap);:fmt从变参列表ap获取数据,然后输出至stdout
  • int vfprintf(FILE *stream, const char *fmt, va_list ap);:fmt从变参列表ap获取数据,然后输出至stream
  • int vsprintf(char *str, const char *fmt, va_list ap);:fmt从变参列表ap获取数据,然后输出至str
  • int vsnprintf(char *str, size_t size, const char *fmt, va_list ap);:fmt从变参列表ap获取数据,然后输出至str,写入至多size个字符(包括’\0’字符)

返回值:正常情况下,返回成功写入的字符数;若出错,则返回负值;

比如:我们可以利用vprintf()写一个自己的格式化输出函数,来模拟printf()

scanf()系列

头文件:stdio.h、stdarg.h

  • int scanf(const char *fmt, ...);:从stdin获取源数据,然后根据fmt格式化,赋值给变参列表
  • int fscanf(FILE *stream, const char *fmt, ...);:从stream获取源数据,然后根据fmt格式化,赋值给变参列表
  • int sscanf(const char *str, const char *fmt, ...);:从str获取源数据,然后根据fmt格式化,赋值给变参列表
  • int vscanf(const char *fmt, va_list ap);:从stdin获取源数据,然后根据fmt格式化,赋值给ap
  • int vfscanf(FILE *stream, const char *fmt, va_list ap);:从stream获取源数据,然后根据fmt格式化,赋值给ap
  • int vsscanf(const char *str, const char *fmt, va_list ap);:从str获取源数据,然后根据fmt格式化,赋值给ap

返回值:正常情况下,返回成功赋值的变量数目;若出错,则返回负值;

例如:利用vprintf()和vscanf()模拟printf()和scanf()函数: