🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](reflection.xhtml "反射") | - [上一页](arg.xhtml "语句解释及变量编译") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python/C API 参考手册](index.xhtml) » - [工具](utilities.xhtml) » - $('.inline-search').show(0); | # 字符串转换与格式化 用于数字转换和格式化字符串输出的函数 int `PyOS_snprintf`(char *\*str*, size\_t *size*, const char *\*format*, ...)根据格式字符串格式和额外参数输出不超过 *size* 字节到 *str* 。请参见Unix手册页 *snprintf(2)* 。 int `PyOS_vsnprintf`(char *\*str*, size\_t *size*, const char *\*format*, va\_list *va*)Output not more than *size* bytes to *str* according to the format string *format* and the variable argument list *va*. Unix man page *vsnprintf(2)*. [`PyOS_snprintf()`](#c.PyOS_snprintf "PyOS_snprintf") and [`PyOS_vsnprintf()`](#c.PyOS_vsnprintf "PyOS_vsnprintf") wrap the Standard C library functions `snprintf()` and `vsnprintf()`. Their purpose is to guarantee consistent behavior in corner cases, which the Standard C functions do not. The wrappers ensure that *str\*\[\*size*-1\] is always `'\0'` upon return. They never write more than *size* bytes (including the trailing `'\0'`) into str. Both functions require that `str != NULL`, `size > 0` and ``` format != NULL ``` . If the platform doesn't have `vsnprintf()` and the buffer size needed to avoid truncation exceeds *size* by more than 512 bytes, Python aborts with a *Py\_FatalError*. The return value (*rv*) for these functions should be interpreted as follows: - When `0 <= rv < size`, the output conversion was successful and *rv*characters were written to *str* (excluding the trailing `'\0'` byte at *str\*\[\*rv*\]). - When `rv >= size`, the output conversion was truncated and a buffer with `rv + 1` bytes would have been needed to succeed. *str\*\[\*size*-1\] is `'\0'`in this case. - When `rv < 0`, "something bad happened." *str\*\[\*size*-1\] is `'\0'` in this case too, but the rest of *str* is undefined. The exact cause of the error depends on the underlying platform. The following functions provide locale-independent string to number conversions. double `PyOS_string_to_double`(const char *\*s*, char *\*\*endptr*, [PyObject](structures.xhtml#c.PyObject "PyObject") *\*overflow\_exception*)Convert a string `s` to a `double`, raising a Python exception on failure. The set of accepted strings corresponds to the set of strings accepted by Python's [`float()`](../library/functions.xhtml#float "float") constructor, except that `s` must not have leading or trailing whitespace. The conversion is independent of the current locale. If `endptr` is `NULL`, convert the whole string. Raise [`ValueError`](../library/exceptions.xhtml#ValueError "ValueError") and return `-1.0` if the string is not a valid representation of a floating-point number. If endptr is not `NULL`, convert as much of the string as possible and set `*endptr` to point to the first unconverted character. If no initial segment of the string is the valid representation of a floating-point number, set `*endptr` to point to the beginning of the string, raise ValueError, and return `-1.0`. If `s` represents a value that is too large to store in a float (for example, `"1e500"` is such a string on many platforms) then if `overflow_exception` is `NULL` return `Py_HUGE_VAL` (with an appropriate sign) and don't set any exception. Otherwise, `overflow_exception` must point to a Python exception object; raise that exception and return `-1.0`. In both cases, set `*endptr` to point to the first character after the converted value. If any other error occurs during the conversion (for example an out-of-memory error), set the appropriate Python exception and return `-1.0`. 3\.1 新版功能. char\* `PyOS_double_to_string`(double *val*, char *format\_code*, int *precision*, int *flags*, int *\*ptype*)Convert a `double` *val* to a string using supplied *format\_code*, *precision*, and *flags*. *format\_code* must be one of `'e'`, `'E'`, `'f'`, `'F'`, `'g'`, `'G'` or `'r'`. For `'r'`, the supplied *precision*must be 0 and is ignored. The `'r'` format code specifies the standard [`repr()`](../library/functions.xhtml#repr "repr") format. *flags* can be zero or more of the values *Py\_DTSF\_SIGN*, *Py\_DTSF\_ADD\_DOT\_0*, or *Py\_DTSF\_ALT*, or-ed together: - *Py\_DTSF\_SIGN* means to always precede the returned string with a sign character, even if *val* is non-negative. - *Py\_DTSF\_ADD\_DOT\_0* means to ensure that the returned string will not look like an integer. - *Py\_DTSF\_ALT* means to apply "alternate" formatting rules. See the documentation for the [`PyOS_snprintf()`](#c.PyOS_snprintf "PyOS_snprintf")`'#'` specifier for details. If *ptype* is non-NULL, then the value it points to will be set to one of *Py\_DTST\_FINITE*, *Py\_DTST\_INFINITE*, or *Py\_DTST\_NAN*, signifying that *val* is a finite number, an infinite number, or not a number, respectively. The return value is a pointer to *buffer* with the converted string or *NULL* if the conversion failed. The caller is responsible for freeing the returned string by calling [`PyMem_Free()`](memory.xhtml#c.PyMem_Free "PyMem_Free"). 3\.1 新版功能. int `PyOS_stricmp`(const char *\*s1*, const char *\*s2*)字符串不区分大小写。该函数几乎与 `strcmp()` 的工作方式相同,只是它忽略了大小写。 int `PyOS_strnicmp`(const char *\*s1*, const char *\*s2*, Py\_ssize\_t *size*)字符串不区分大小写。该函数几乎与 `strncmp()` 的工作方式相同,只是它忽略了大小写。 ### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](reflection.xhtml "反射") | - [上一页](arg.xhtml "语句解释及变量编译") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python/C API 参考手册](index.xhtml) » - [工具](utilities.xhtml) » - $('.inline-search').show(0); | © [版权所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 软件基金会是一个非盈利组织。 [请捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [发现了问题](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 创建。