zoukankan      html  css  js  c++  java
  • printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf

    参考:http://blog.sina.com.cn/s/blog_674b5aae0100prv3.html

    总览 (SYNOPSIS)

    #include <stdio.h>

    int printf(const char *format, ...);

    int fprintf(FILE *stream, const char *format, ...);

    int sprintf(char *str, const char *format, ...);

    int snprintf(char *str, size_t size, const char *format, ...);

    #include <stdarg.h>------------现在好像都在stdio.h中进行声明。

    int vprintf(const char *format, va_list ap);

    int vfprintf(FILE *stream, const char *format, va_list ap);

    int vsprintf(char *str, const char *format, va_list ap);

    int vsnprintf(char *str, size_t size, const char *format, va_list ap);

    描述 (DESCRIPTION)

    print系列函数根据format 参数生成输出内容。

    printf和vprintf函数把输出内容写到stdout,即标准输出流;

    fprintf和vfprintf函数把输出内容写到给定的stream流;

    sprintf、snprintf、 vsprintf和vsnprintf函数把输出内容存放到字符串str中.。

    这些函数由格式字符串format参数控制输出内容,它指出怎么样把后面的参数(或通过stdarg(3)的变长参数机制访问的 参数)转换成输出内容。

    这些函数返回打印的字符数量(不包括字符串结尾用的‘‘)。snprintf和vsnprintf的输出不会超过size 字节(包括了结尾的`'), 如果因为这个限制导致输出内容被截断, 则函数返回-1。(这句话解释有误,可以参考man手册,原文关于返回值表述如下:)

    Return value
           Upon successful return, these functions return the number of characters
           printed  (not  including  the  trailing  ’’  used  to  end  output to
           strings).  The functions snprintf() and vsnprintf() do not  write  more
           than size bytes (including the trailing ’’). If the output was trun-
           cated due to this limit then the return value is the number of  charac-
           ters (not including the trailing ’’) which would have been written to
           the final string if enough space had been  available. 
    Thus,  a  return
           value  of  size  or more means that the output was truncated. (See also
           below under NOTES.)  If an output  error  is  encountered,  a  negative
           value is returned.

    从手册中可以看出,意思是如果输出由于受到size的限制而被截断输出,返回值则是被截断后并写入str中的字符数(不包括‘’),并且前提是str有足够的可用空间。

    而如果输出遇到错误,会返回一个负值。这句话是针对上面8个函数而言的。

  • 相关阅读:
    Natas Wargame Level 13 Writeup(文件上传漏洞,篡改file signature,Exif)
    Natas Wargame Level 12 Writeup(文件上传漏洞)
    Natas Wargame Level 9 Writeup(bash injection)
    Natas Wargame Level 2 Writeup 与目录泄露(强制访问)
    Natas Wargame Level 3 Writeup 与 robots.txt
    字符编码与文件操作
    python 基本数据类型
    python数据类型内置方法 字符串和列表
    python常用模块
    python数据类型及基本运算符
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3490867.html
Copyright © 2011-2022 走看看