printf相关函数详解

本文详细介绍了C语言中printf及其相关函数的功能与使用方法,包括输出到屏幕、文件及字符串的不同函数,阐述了它们的参数、返回值及注意事项。

int printf( const char *format, ... );(until C99)  
int printf( const char *restrict format, ... ); (since C99)
  (2)  
int fprintf( FILE *stream, const char *format, ... );
(until C99)
int fprintf( FILE *restrict stream, const char *restrict format, ... );
(since C99)//输出到文件
  (3)  
int sprintf( char *buffer, const char *format, ... );
(until C99)
int sprintf( char *restrict buffer, const char *restrict format, ... );
(since C99)//输出到字符串buffer中
int snprintf( char *restrict buffer, int bufsz, 
              const char *restrict format, ... );
(4) (since C99)//按size大小输出到字符串str中
int printf_s(const char *restrict format, ...);
(5) (since C11)
int fprintf_s(FILE *restrict stream, const char *restrict format, ...);
(6) (since C11)
int sprintf_s(char *restrict buffer, rsize_t bufsz,
              const char *restrict format, ...);
(7) (since C11)
int snprintf_s(char *restrict buffer, rsize_t bufsz,
               const char *restrict format, ...);
(8) (since C11)

参数:

    

stream-输出到要写至的文件流
buffer-指向要写至的目标字符串
bufsz-要写的缓冲区大小 - 至少有1个字符可能被写,还有一个空结尾
format-指向一个以空结尾的字符串来说明以什么样的格式来翻译这个数据,这种格式的字符串由普通的多个字符和转换说明符来组成(除了%),字符会无改变的复制到输出流,每个转换说明符有以下格式:


转换说明 解释 参数类型
长度修改 hh h (none) l ll j z t L
%写原义的l %. 完全转化必须是 %%. N/A N/A N/A N/A N/A N/A N/A N/A N/A
c
输出一个单独的字符


N/A N/A
int
wint_t
N/A N/A N/A N/A N/A
s
输出一个字符串


N/A N/A
char*
wchar_t*
N/A N/A N/A N/A N/A
d
i

  把一个有符号的整数转化为10进制形式的数


signed char
short
int
long
long long
signed  size_t
N/A
o

把无符号证书转化为8进制形式的数


unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
unsigned version of  ptrdiff_t
N/A
x
X

把五福好证书转化为16进制形式的数


N/A
u

把无符号证书转化为十进制形式的数


N/A
f
F

把浮点数转化为十进制计数法


N/A N/A
double
double  (since C99)
N/A N/A N/A N/A
long double
e 
E

把浮点数转化为 10进制指数计数法


N/A N/A N/A N/A N/A N/A
a 
A

把浮点数转化成为16进制指数计数法


N/A N/A N/A N/A N/A N/A
g 
G

依据值和精度把浮点数转化成为十进制或者十进制指数形式的数


N/A N/A N/A N/A N/A N/A
n
回从这个函数调用到目前为止,写入的字符数


signed char*
short*
int*
long*
long long*
signed  size_t*
N/A
p
      写下一个定义过的字符序列的执行
N/A N/Avoid* N/A N/A N/A N/A N/A N/A












返回值:

1,2)  返回转化输出流的字符的个数,如果一个输出错误或者编码错误发生,则返回一个负值
3)  返回成功写进文件缓冲区的字符的个数(不包括结尾空字符),如果一个输出错误或者编码错误发生,则返回一个负值
4)   如果指定缓冲徐大小 bufsz 被忽略的话,返回写进缓冲的大小 (不包括结尾空字符) ,否则, 如果一个输出错误或者编码错误发生,则返回一个负值
5,6)    返回转化输出流的字符的个数,如果一个输出错误或者编码错误或者一个运行约束冲突错误
7)
              返回成功写入缓冲区的字符的个数,不计算空结尾,只要buffer 不是一个空指针并且bufsz也不是0,并且不大于 RSIZE_MAX
       返回0 如果发生运行约束冲突错误
              返回负值 如果发生编码错误
8)               
     返回成功写入缓冲区的字符的个数,不计算空结尾,只要buffer 不是一个空指针并且bufsz也不是0,并且不大于 RSIZE_MAX
   返回负值 如果发生运行约束冲突错误 或者编码错误
     
   

  区别:

        printf只会检查格式字符串是否为空,而printf_s还会检查用户自定义的格式字符串是否合法      
 












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值