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还会检查用户自定义的格式字符串是否合法      
 












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
printf() 是 C 语言中的一个非常重要的输出函数,可以将格式化的数据输出到终端或其他设备上。它的原型如下: ```c int printf(const char *format, ...); ``` 其中第一个参数 format 是输出格式的字符串,第二个参数是可变参数,表示要输出的数据。 printf() 函数的输出格式字符串有特定的格式控制字符,可以控制输出内容的样式和格式。常见的格式控制字符如下: - %d:以十进制整数形式输出; - %f:以浮点数形式输出; - %c:以字符形式输出; - %s:以字符串形式输出; - %p:以指针地址形式输出; - %x:以十六进制整数形式输出; - %%:输出 % 符号本身。 除了常见的格式控制字符外,还可以使用一些修饰符来控制输出格式,例如: - %5d:输出宽度为 5 的十进制整数; - %-5d:输出宽度为 5 的左对齐的十进制整数; - %+d:输出带符号的十进制整数; - %#x:输出带前缀的十六进制整数。 下面是一些示例代码: ```c #include <stdio.h> int main() { int a = 123; float b = 3.1415926; char c = 'A'; char str[20] = "hello, world"; void *ptr = &a; printf("a = %d\n", a); printf("b = %f\n", b); printf("c = %c\n", c); printf("str = %s\n", str); printf("ptr = %p\n", ptr); printf("%5d\n", 123); printf("%-5d\n", 123); printf("%+d\n", 123); printf("%#x\n", 0x123); return 0; } ``` 运行结果如下: ``` a = 123 b = 3.141593 c = A str = hello, world ptr = 0x7ffc1c2b7afc 123 123 +123 0x123 ``` 注意,printf() 函数输出时,需要使用转义字符来输出一些特殊字符,例如换行符 \n、制表符 \t 等等。 printf() 函数还有一些高级用法,例如使用格式化字符串来控制输出格式,以及使用文件流来输出数据等等。如果想了解更多关于 printf() 函数的内容,可以参考相关的 C 语言教程和手册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值