Python: ctypes how to convert c_char_Array into c_char_p2019 Community Moderator ElectionHow to merge two dictionaries in a single expression?How do I check whether a file exists without exceptions?Calling an external command in PythonWhat are metaclasses in Python?Finding the index of an item given a list containing it in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?How to get the current time in PythonHow can I make a time delay in Python?Does Python have a string 'contains' substring method?

Print last inputted byte

Print a physical multiplication table

Isn't the word "experience" wrongly used in this context?

How can an organ that provides biological immortality be unable to regenerate?

If I cast the Enlarge/Reduce spell on an arrow, what weapon could it count as?

is this saw blade faulty?

How can a new country break out from a developed country without war?

Why is there so much iron?

Hot air balloons as primitive bombers

Why is this tree refusing to shed its dead leaves?

Is xar preinstalled on macOS?

Weird lines in Microsoft Word

What is the tangent at a sharp point on a curve?

Gauss brackets with double vertical lines

Do native speakers use "ultima" and "proxima" frequently in spoken English?

Are hand made posters acceptable in Academia?

Did Nintendo change its mind about 68000 SNES?

Fair way to split coins

How do researchers send unsolicited emails asking for feedback on their works?

Homology of the fiber

Have the tides ever turned twice on any open problem?

Can "few" be used as a subject? If so, what is the rule?

What is the difference between something being completely legal and being completely decriminalized?

Do I need to convey a moral for each of my blog post?



Python: ctypes how to convert c_char_Array into c_char_p



2019 Community Moderator ElectionHow to merge two dictionaries in a single expression?How do I check whether a file exists without exceptions?Calling an external command in PythonWhat are metaclasses in Python?Finding the index of an item given a list containing it in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?How to get the current time in PythonHow can I make a time delay in Python?Does Python have a string 'contains' substring method?










0















The function create_string_buffer(b"foo", 3) returns a type c_char_Array_3. Trying to pass this in where c_char_p is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance. How do I pass the output of create_string_buffer into a field that expects c_char_p?



I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer



However, it's unclear to me what the answer was.










share|improve this question




























    0















    The function create_string_buffer(b"foo", 3) returns a type c_char_Array_3. Trying to pass this in where c_char_p is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance. How do I pass the output of create_string_buffer into a field that expects c_char_p?



    I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer



    However, it's unclear to me what the answer was.










    share|improve this question


























      0












      0








      0








      The function create_string_buffer(b"foo", 3) returns a type c_char_Array_3. Trying to pass this in where c_char_p is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance. How do I pass the output of create_string_buffer into a field that expects c_char_p?



      I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer



      However, it's unclear to me what the answer was.










      share|improve this question
















      The function create_string_buffer(b"foo", 3) returns a type c_char_Array_3. Trying to pass this in where c_char_p is expected blows up with TypeError: incompatible types, c_char_Array_3 instance instead of c_char_p instance. How do I pass the output of create_string_buffer into a field that expects c_char_p?



      I think this person had the same question: https://ctypes-users.narkive.com/620LJv10/why-doesn-t-c-char-array-get-coerced-on-assignment-to-a-pointer



      However, it's unclear to me what the answer was.







      python ctypes






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 7 at 18:48







      Tommy

















      asked Mar 7 at 18:42









      TommyTommy

      5,08653460




      5,08653460






















          1 Answer
          1






          active

          oldest

          votes


















          1














          You can pass a create_string_buffer object to a function with a c_char_p as an .argtypes parameter, but not when it is a member of a structure. cast can work around it. This was mentioned in the link you provided in the question.



          from ctypes import *

          class foo(Structure):
          _fields_ = [('bar',c_char_p)]

          s = create_string_buffer(b'test')

          f = foo()
          f.bar = cast(s,c_char_p)
          print(f.bar)
          s[0] = b'q'
          print(f.bar)


          Output:



          b'test'
          b'qest'





          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55050741%2fpython-ctypes-how-to-convert-c-char-array-into-c-char-p%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            You can pass a create_string_buffer object to a function with a c_char_p as an .argtypes parameter, but not when it is a member of a structure. cast can work around it. This was mentioned in the link you provided in the question.



            from ctypes import *

            class foo(Structure):
            _fields_ = [('bar',c_char_p)]

            s = create_string_buffer(b'test')

            f = foo()
            f.bar = cast(s,c_char_p)
            print(f.bar)
            s[0] = b'q'
            print(f.bar)


            Output:



            b'test'
            b'qest'





            share|improve this answer



























              1














              You can pass a create_string_buffer object to a function with a c_char_p as an .argtypes parameter, but not when it is a member of a structure. cast can work around it. This was mentioned in the link you provided in the question.



              from ctypes import *

              class foo(Structure):
              _fields_ = [('bar',c_char_p)]

              s = create_string_buffer(b'test')

              f = foo()
              f.bar = cast(s,c_char_p)
              print(f.bar)
              s[0] = b'q'
              print(f.bar)


              Output:



              b'test'
              b'qest'





              share|improve this answer

























                1












                1








                1







                You can pass a create_string_buffer object to a function with a c_char_p as an .argtypes parameter, but not when it is a member of a structure. cast can work around it. This was mentioned in the link you provided in the question.



                from ctypes import *

                class foo(Structure):
                _fields_ = [('bar',c_char_p)]

                s = create_string_buffer(b'test')

                f = foo()
                f.bar = cast(s,c_char_p)
                print(f.bar)
                s[0] = b'q'
                print(f.bar)


                Output:



                b'test'
                b'qest'





                share|improve this answer













                You can pass a create_string_buffer object to a function with a c_char_p as an .argtypes parameter, but not when it is a member of a structure. cast can work around it. This was mentioned in the link you provided in the question.



                from ctypes import *

                class foo(Structure):
                _fields_ = [('bar',c_char_p)]

                s = create_string_buffer(b'test')

                f = foo()
                f.bar = cast(s,c_char_p)
                print(f.bar)
                s[0] = b'q'
                print(f.bar)


                Output:



                b'test'
                b'qest'






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 7 at 23:25









                Mark TolonenMark Tolonen

                95.4k12115177




                95.4k12115177





























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55050741%2fpython-ctypes-how-to-convert-c-char-array-into-c-char-p%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme

                    Identity Server 4 is not redirecting to Angular app after login2019 Community Moderator ElectionIdentity Server 4 and dockerIdentityserver implicit flow unauthorized_clientIdentityServer Hybrid Flow - Access Token is null after user successful loginIdentity Server to MVC client : Page Redirect After loginLogin with Steam OpenId(oidc-client-js)Identity Server 4+.NET Core 2.0 + IdentityIdentityServer4 post-login redirect not working in Edge browserCall to IdentityServer4 generates System.NullReferenceException: Object reference not set to an instance of an objectIdentityServer4 without HTTPS not workingHow to get Authorization code from identity server without login form

                    2005 Ahvaz unrest Contents Background Causes Casualties Aftermath See also References Navigation menue"At Least 10 Are Killed by Bombs in Iran""Iran"Archived"Arab-Iranians in Iran to make April 15 'Day of Fury'"State of Mind, State of Order: Reactions to Ethnic Unrest in the Islamic Republic of Iran.10.1111/j.1754-9469.2008.00028.x"Iran hangs Arab separatists"Iran Overview from ArchivedConstitution of the Islamic Republic of Iran"Tehran puzzled by forged 'riots' letter""Iran and its minorities: Down in the second class""Iran: Handling Of Ahvaz Unrest Could End With Televised Confessions""Bombings Rock Iran Ahead of Election""Five die in Iran ethnic clashes""Iran: Need for restraint as anniversary of unrest in Khuzestan approaches"Archived"Iranian Sunni protesters killed in clashes with security forces"Archived