summaryrefslogtreecommitdiff
path: root/docs/examples/tutorial/string/c_func.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/tutorial/string/c_func.pyx')
-rw-r--r--docs/examples/tutorial/string/c_func.pyx18
1 files changed, 18 insertions, 0 deletions
diff --git a/docs/examples/tutorial/string/c_func.pyx b/docs/examples/tutorial/string/c_func.pyx
new file mode 100644
index 000000000..c428220a2
--- /dev/null
+++ b/docs/examples/tutorial/string/c_func.pyx
@@ -0,0 +1,18 @@
+from libc.stdlib cimport malloc
+from libc.string cimport strcpy, strlen
+
+cdef char* hello_world = 'hello world'
+cdef Py_ssize_t n = strlen(hello_world)
+
+
+cdef char* c_call_returning_a_c_string():
+ cdef char* c_string = <char *> malloc((n + 1) * sizeof(char))
+ strcpy(c_string, hello_world)
+ return c_string
+
+
+cdef void get_a_c_string(char** c_string_ptr, Py_ssize_t *length):
+ c_string_ptr[0] = <char *> malloc((n + 1) * sizeof(char))
+
+ strcpy(c_string_ptr[0], hello_world)
+ length[0] = n