代碼我也放在了gist上https://gist.github.com/hit9/7244344foolib.c:typedefstructpost{char*x;char*y;intx_z;}post_t;voidfoo(post_t*o,char*src){inti=0;char*p=src;intlen=strlen(src);for(;*p!='\0';i++,p++){if(*p=='x'){o->x=p;o->x_z=len-i;}}o->y=src;}test.py:fromctypesimport*foolib=CDLL("./foolib.so")classPost(Structure):_fields_=(("x",c_void_p),("y",c_void_p),("x_z",c_int),)o=Post()s="iooxooiddfggggggggggggvd"foolib.foo(byref(o),create_string_buffer(s))printo.x_zprintstring_at(o.x,o.x_z)printstring_at(o.y,len(s))其中,foolib.c用來(lái)生成一個(gè)動(dòng)態(tài)鏈接庫(kù)foolib.so打印結(jié)果為何是:foo?pythontest.py21ooiddfggggggggggggvdooiddfggggggggggggvd而不是21iooxooiddfggggggggggggvdooiddfggggggggggggvd呢?
ctypes.string_at的莫名奇妙的問(wèn)題
翻翻過(guò)去那場(chǎng)雪
2019-04-08 11:16:56