• 大小: 121KB
    文件类型: .gz
    金币: 2
    下载: 0 次
    发布日期: 2024-01-06
  • 语言: 其他
  • 标签: snprintf  snprintf  

资源简介

可移植的snprintf,遵循C99标准-portable snprintf,comply with C99

资源截图

代码片段和文件信息

/*
 * snprintf.c - a portable implementation of snprintf
 *
 * AUTHOR
 *   Mark Martinec  April 1999.
 *
 *   Copyright 1999 Mark Martinec. All rights reserved.
 *
 * TERMS AND CONDITIONS
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the “Frontier Artistic License“ which comes
 *   with this Kit.
 *
 *   This program is distributed in the hope that it will be useful
 *   but WITHOUT ANY WARRANTY; without even the implied warranty
 *   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *   See the Frontier Artistic License for more details.
 *
 *   You should have received a copy of the Frontier Artistic License
 *   with this Kit in the file named LICENSE.txt .
 *   If not I‘ll be glad to provide one.
 *
 * FEATURES
 * - careful adherence to specs regarding flags field width and precision;
 * - good performance for large string handling (large format large
 *   argument or large paddings). Performance is similar to system‘s sprintf
 *   and in several cases significantly better (make sure you compile with
 *   optimizations turned on tell the compiler the code is strict ANSI
 *   if necessary to give it more freedom for optimizations);
 * - return value semantics per ISO/IEC 9899:1999 (“ISO C99“);
 * - written in standard ISO/ANSI C - requires an ANSI C compiler.
 *
 * SUPPORTED CONVERSION SPECIFIERS AND DATA TYPES
 *
 * This snprintf only supports the following conversion specifiers:
 * s c d u o x X p  (and synonyms: i D U O - see below)
 * with flags: ‘-‘ ‘+‘ ‘ ‘ ‘0‘ and ‘#‘.
 * An asterisk is supported for field width as well as precision.
 *
 * Length modifiers ‘h‘ (short int) ‘l‘ (long int)
 * and ‘ll‘ (long long int) are supported.
 * NOTE:
 *   If macro SNPRINTF_LONGLONG_SUPPORT is not defined (default) the
 *   length modifier ‘ll‘ is recognized but treated the same as ‘l‘
 *   which may cause argument value truncation! Defining
 *   SNPRINTF_LONGLONG_SUPPORT requires that your system‘s sprintf also
 *   handles length modifier ‘ll‘.  long long int is a language extension
 *   which may not be portable.
 *
 * Conversion of numeric data (conversion specifiers d u o x X p)
 * with length modifiers (none or h l ll) is left to the system routine
 * sprintf but all handling of flags field width and precision as well as
 * c and s conversions is done very carefully by this portable routine.
 * If a string precision (truncation) is specified (e.g. %.8s) it is
 * guaranteed the string beyond the specified precision will not be referenced.
 *
 * Length modifiers h l and ll are ignored for c and s conversions (data
 * types wint_t and wchar_t are not supported).
 *
 * The following common synonyms for conversion characters are supported:
 *   - i is a synonym for d
 *   - D is a synonym for ld explicit length modifiers are ignored
 *   - U is a synonym for lu explicit length modifiers are ignored
 *   - O is a synonym for lo expli

评论

共有 条评论

相关资源