Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-69011:ctypes.create_*_buffer clarify NUL termination character inclusion#132858

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
StanFromIreland wants to merge5 commits intopython:main
base:main
Choose a base branch
Loading
fromStanFromIreland:ctypes-note
Open
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 36 additions & 16 deletionsDoc/library/ctypes.rst
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2031,35 +2031,55 @@ Utility functions
pointer.


.. function:: create_string_buffer(init_or_size, size=None)
.. function:: create_string_buffer(init, size=None)
create_string_buffer(size)

This function creates a mutable character buffer. The returned object is a
ctypes array of :class:`c_char`.

*init_or_size* must be an integer which specifies the size of the array, or a
bytes object which will be used to initializethearray items.
If *size* is given (and not ``None``), it must be an :class:`int`.
It specifies the size ofthereturned array.

If a bytes object is specified as first argument, the buffer is made one item
larger than its length so that the last element in the array is a NUL
termination character. An integer can be passed as second argument which allows
specifying the size of the array if the length of the bytes should not be used.
If the *init* argument is given, it must be :class:`bytes`. It is used
to initialize the array items. Bytes not initialized this way are
set to zero (NUL).

If *size* is not given (or if it is ``None``), the buffer is made one element
larger than *init*, effectively adding a NUL terminator.

If both arguments are given, *size* must not be less than ``len(init)``.

.. warning::

If *size* is equal to ``len(init)``, a NUL terminator is
not added. Do not treat such a buffer as a C string.

For example::

>>> bytes(create_string_buffer(2))
b'\x00\x00'
>>> bytes(create_string_buffer(b'ab'))
b'ab\x00'
>>> bytes(create_string_buffer(b'ab', 2))
b'ab'
>>> bytes(create_string_buffer(b'ab', 4))
b'ab\x00\x00'
>>> bytes(create_string_buffer(b'abcdef', 2))
Traceback (most recent call last):
...
ValueError: byte string too long

.. audit-event:: ctypes.create_string_buffer init,size ctypes.create_string_buffer


.. function:: create_unicode_buffer(init_or_size, size=None)
.. function:: create_unicode_buffer(init, size=None)
create_unicode_buffer(size)

This function creates a mutable unicode character buffer. The returned object is
a ctypes array of :class:`c_wchar`.

*init_or_size* must be an integer which specifies the size of the array, or a
string which will be used to initialize the array items.

If a string is specified as first argument, the buffer is made one item
larger than the length of the string so that the last element in the array is a
NUL termination character. An integer can be passed as second argument which
allows specifying the size of the array if the length of the string should not
be used.
The function takes the same arguments as :func:`~create_string_buffer` except
*init* must be a string and *size* counts :class:`c_wchar`.

.. audit-event:: ctypes.create_unicode_buffer init,size ctypes.create_unicode_buffer

Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp