最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用ctypes使用C函數(shù)printf的方法

 更新時間:2017年08月23日 17:11:56   投稿:mdxy-dxy  
這篇文章主要介紹了Python調(diào)用ctypes使用C函數(shù)printf,需要的朋友可以參考下

在Python程序中導入ctypes模塊,載入動態(tài)鏈接庫。動態(tài)鏈接庫有三種:cdll以及windows下的windll和oledll,cdll載入導出函數(shù)使用標準的cdecl調(diào)用規(guī)范的庫,而windll載入導出函數(shù)符合stdcall調(diào)用規(guī)范(Win32 API的原生約定)的庫,oledll也使用stdcall調(diào)用規(guī)范,并假設(shè)函數(shù)返回Windows的HRESULT錯誤代碼。錯誤代碼用于在出錯時自動拋出WindowsError這個Python異常,可以使用COM函數(shù)得到具體的錯誤信息。

使用cdll.msvcrt即可調(diào)用MS標準的C庫msvcrt,msvcrt包含了大部分標準C函數(shù)。

下面來看一下簡單的printf函數(shù)。

from ctypes import *
msvcrt = cdll.msvcrt
str = "Huanhuan!"
msvcrt.printf("Hello %s\n", str)

這樣就可以使用C語言中的printf函數(shù)進行輸出。
如果在IDLE里運行的話會發(fā)現(xiàn)程序沒有任何輸出結(jié)果,這是因為printf是打印到真實的標準輸出,而不是sys.stdout。如果想要看到運行結(jié)果,可以在CMD里運行python test.py來查看結(jié)果,前提是已經(jīng)設(shè)置好了Python的環(huán)境變量?;蛘哂幸粋€曲線方法可以在IDLE中顯示輸出結(jié)果,請曲線閱讀到文章最后。

如果使用的是Py3K,在控制臺里會看到只有開頭字符H被輸出了。因為Py3K使用的是Unicode編碼,而printf不支持該編碼,所以需要轉(zhuǎn)碼。整理出來三種改寫方法可以解決這一問題。

# A 轉(zhuǎn)為byte類型 在字符串前面加b
from ctypes import *
msvcrt = cdll.msvcrt
str = b"Huanhuan!"
msvcrt.printf(b"Hello %s\n", str)

# B 使用wprintf寬字符顯示
from ctypes import *
msvcrt = cdll.msvcrt
str = "Huanhuan!"
msvcrt.wprintf("Hello %s\n", str)

# C 轉(zhuǎn)碼為utf-8
from ctypes import *
msvcrt = cdll.msvcrt
str = "Huanhuan!"
result = "Hello " + str + "\n"
result = result.encode("utf-8")
msvcrt.printf(result)

最后來搞定在IDLE中曲線顯示輸出結(jié)果的方法。

from ctypes import *
msvcrt = cdll.msvcrt
str = b"Huanhuan!"
s = create_string_buffer(100)  # 必須足夠長
msvcrt.sprintf(s, b'Hello %s\n', str)
print(s.value.decode('utf-8'))

先使用sprintf函數(shù)把結(jié)果輸出到s變量,然后再用Python自帶的print方法輸出s的value。

好了,通過以上的各種方法就可以解決Py3K調(diào)用C函數(shù)printf的問題了。

什么?你問我為什么費這么大勁非要用printf輸出,而不是直接用Python自帶的print?

python的print和c的printf有什么區(qū)別

print([object, ...], *, sep=' ', end='\n', file=sys.stdout, flush=False)

輸出對象到流文件,sep指定分割符,end指定結(jié)束符。參數(shù)轉(zhuǎn)換為字符串寫入輸出流,如果沒有輸出內(nèi)容直接輸出end結(jié)束符。file參數(shù)必須是包含write方法的對象,默認輸出到標準輸出。

int printf( char * format, ... );

根據(jù)參數(shù) format 字符串來轉(zhuǎn)換并格式化數(shù)據(jù),然后將結(jié)果輸出到標準輸出設(shè)備(顯示器),直到出現(xiàn)字符串結(jié)束('\0')為止。
參數(shù) format 字符串可包含下列三種字符類型:

一般文本,將會直接輸出
ASCII 控制字符,如\t、\n 等有特定含義
格式轉(zhuǎn)換字符

格式轉(zhuǎn)換為一個百分比符號(%)及其后的格式字符所組成。一般而言,每個%符號在其后都必需有一個參數(shù)與之相呼應(yīng)(只有當%%轉(zhuǎn)換字符出現(xiàn)時會直接輸出%字符),而欲輸出的數(shù)據(jù)類型必須與其相對應(yīng)的轉(zhuǎn)換字符類型相同。

相關(guān)文章

  • Python實現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)中隊列的操作方法示例

    Python實現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)中隊列的操作方法示例

    這篇文章主要介紹了Python實現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)中隊列的操作方法,結(jié)合實例形式演示了Python針對數(shù)據(jù)結(jié)構(gòu)中隊列的初始化、插入、刪除、判斷隊列滿及隊列空等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Python常用外部指令執(zhí)行代碼實例

    Python常用外部指令執(zhí)行代碼實例

    這篇文章主要介紹了Python常用外部指令執(zhí)行代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Python中的閉包詳細介紹和實例

    Python中的閉包詳細介紹和實例

    這篇文章主要介紹了Python中的閉包詳細介紹和實例,本文先是詳細講解了閉包的相關(guān)知識,然后給出了python中閉包例子、lamada例子,需要的朋友可以參考下
    2014-11-11
  • 基于Python爬取51cto博客頁面信息過程解析

    基于Python爬取51cto博客頁面信息過程解析

    這篇文章主要介紹了基于Python爬取51cto博客頁面信息過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Pycharm學習教程(3) 代碼運行調(diào)試

    Pycharm學習教程(3) 代碼運行調(diào)試

    這篇文章主要為大家詳細介紹了最全的Pycharm學習教程第三篇代碼運行調(diào)試,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 利用python將圖片轉(zhuǎn)換成excel文檔格式

    利用python將圖片轉(zhuǎn)換成excel文檔格式

    編寫了一小段Python代碼,將圖片轉(zhuǎn)為了Excel,純屬娛樂,下面這篇文章主要給大家介紹了關(guān)于利用python將圖片轉(zhuǎn)換成excel文檔格式的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • matplotlib.pyplot畫圖 圖片的二進制流的獲取方法

    matplotlib.pyplot畫圖 圖片的二進制流的獲取方法

    今天小編就為大家分享一篇matplotlib.pyplot畫圖 圖片的二進制流的獲取方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Pygame游戲開發(fā)之太空射擊實戰(zhàn)碰撞改進篇

    Pygame游戲開發(fā)之太空射擊實戰(zhàn)碰撞改進篇

    相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動手實現(xiàn)它,在編寫學習中回顧過往展望未來,在本課中,我們將討論如何更改?Pygame?處理精靈之間沖突的方式
    2022-08-08
  • Python自動化實現(xiàn)監(jiān)控分析系統(tǒng)日志并告警

    Python自動化實現(xiàn)監(jiān)控分析系統(tǒng)日志并告警

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)一個強大的日志分析和告警工具,用于實時監(jiān)控、分析系統(tǒng)日志并發(fā)送告警通知,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-12-12
  • Python運算符之Inplace運算符的使用教程

    Python運算符之Inplace運算符的使用教程

    Inplace運算符的行為與普通運算符相似,只是在可變目標和不可變目標的情況下它們以不同的方式起作用。本文將通過示例帶大家了解Inplace運算符的使用,需要的可以參考一下
    2022-09-09

最新評論

金昌市| 霍州市| 齐河县| 连平县| 长沙县| 吴川市| 延安市| 秦皇岛市| 东安县| 手游| 攀枝花市| 花垣县| 仁化县| 临猗县| 和田市| 永定县| 大连市| 姚安县| 漳浦县| 宁武县| 乐平市| 诸暨市| 大同县| 遂溪县| 湾仔区| 巧家县| 甘洛县| 霞浦县| 罗江县| 白河县| 曲周县| 营口市| 芜湖县| 宜州市| 日土县| 泸西县| 阿图什市| 蓬安县| 义马市| 教育| 东港市|