zlib庫compress和uncompress函式的使用方法
zlib(http://zlib.net/)提供了簡潔高效的In-Memory資料壓縮和解壓縮系列API函式,很多應用都會用到這個庫,其中compress和uncompress函式是最基本也是最常用的。不過很奇怪的是,compress和uncompress函式儘管已經非常的簡單,卻仍然有不少人用得不好,其實歸根結底還是在於有些事情沒有弄明白,這裡大家先看下面的程式碼。
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- #include <zlib.h>
- int main(int argc,
- {
- char text[] = "zlib compress and uncompress test\[email protected]\n2012-11-05\n";
- uLong tlen = strlen(text) + 1; /* 需要把字串的結束符'\0'也一併處理 */
- char* buf = NULL;
- uLong blen;
- /* 計算緩衝區大小,併為其分配記憶體 */
- blen = compressBound(tlen); /* 壓縮後的長度是不會超過blen的 */
- if((buf = (char
- {
- printf("no enough memory!\n");
- return -1;
- }
- /* 壓縮 */
- if(compress(buf, &blen, text, tlen) != Z_OK)
- {
- printf("compress failed!\n");
- return -1;
- }
- /* 解壓縮 */
- if(uncompress(text, &tlen, buf, blen) != Z_OK)
- {
- printf("uncompress failed!\n");
- return -1;
- }
- /* 列印結果,並釋放記憶體 */
- printf("%s", text);
- if(buf != NULL)
- {
- free(buf);
- buf = NULL;
- }
- return 0;
- }
相關推薦
zlib庫compress和uncompress函式的使用方法
zlib(http://zlib.net/)提供了簡潔高效的In-Memory資料壓縮和解壓縮系列API函式,很多應用都會用到這個庫,其中compress和uncompress函式是最基本也是最常用的。不過很奇怪的是,compress和uncompress函式儘管已經非
Python資料型別和相關函式方法
只列出了常用的。 簡單資料型別: 整數(int,long) 123,不用考慮範圍問題。 浮點數(float) 1.23 布林值(bool) True,False 空型別(None) 空物件,表示未定義,它的布林值為False 高階資料型別: 字串(str) "
linux動態庫lib和inlcude 載入方法
眾所周知,Linux動態庫的預設搜尋路徑是/lib和/usr/lib。動態庫被建立後,一般都複製到這兩個目錄中。當程式執行時需要某動態庫,並且該動態庫還未載入到記憶體中,則系統會自動到這兩個預設搜尋路徑中去查詢相應的動態庫檔案,然後載入該檔案到記憶體中,這
使用zlib庫的compress函式與uncompress函式
zlib是一個免費、通用、無損的資料壓縮庫,而且還是跨平臺的。zlib具有同winzip和winrar等商業軟體相比毫不遜色的壓縮率,已經成功應用在諸如MySQL、Java、3DMax、甚至是微軟的DirectX等大型的系統中。目前Z1ib的最新版本是1.2
使用zlib開源庫的uncompress函式解壓時出現記憶體崩潰問題及error LNK2026: 模組對於 SAFESEH 映像是不安全的問題
最近的專案中需要解壓縮,打算使用zlib開源庫在VS2013中開發,但是在使用uncompress函式進行解壓縮過程中遇到了記憶體崩潰現象,錯誤發生在inflate_fast裡面的彙編模組。經過分析發現是在編譯zlibwapi.dll的時候使用匯編模組造成的
C 和 C++ 的標準庫分別有自己的 locale 操作方法,C 標準庫的 locale 設定函式是 setlocale(),而 C++ 標準庫有 locale 類和流物件的 imbue() 方法(gcc使用zh_CN.GBK,或者zh_CN.UTF-8,VC++使用Chinese_People
轉自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ [在此向原文作者說聲謝謝!若有讀者看到文章轉載時請寫該轉載地址,不要寫我的BLOG地址。尊重他人的勞動成果 ^_^ ] C 和 C++ 的標準庫分別有自己的
【python學習筆記】python函式定義和傳參方法說明
一、函式定義方式 函式定義用關鍵字def,其引數傳遞不用設定型別,也不用定義返回,然後在函式名稱後加上:號,這點和java很不一樣,相對來說更加簡單了;另外包含關係上用四個空格來標識,而非java的;號; 如下為一個範例,定義了一個函式用來生成任意上界的菲波那契數列: # -*- c
【機器學習演算法實現】logistic迴歸 基於Python和Numpy函式庫
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
【機器學習演算法實現】kNN演算法 手寫識別——基於Python和NumPy函式庫
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
PHP反射實現對類的方法依賴注入和建構函式依賴注入
前段時間一直在看tp5 發現他內部實現了控制器的依賴注入。。下面 我通過程式碼來說明一下是怎麼實現的。 首先我們準備好幾個類檔案 我們先看目錄安排 其中 start.php是啟動檔案 <?php /** * Created by PhpStorm. * User: A
unity碰撞檢測和觸發器的方法函式
碰撞檢測涉及三個函式: 當與物體碰撞的一瞬間:OnCollisionEnter(Collision collision),collisionInfo是撞到的物體的碰撞資訊; 當在與物體持續碰撞接觸期間:OnCollisionStay(Collision collisio
linux下封裝函式庫——動態庫.so和靜態庫.a(程式碼實現及連結方式)
在linux環境下的連結庫分為靜態連結庫(.a庫)和動態連結庫(.so庫),其作用是把C程式編譯好做成一種可執行連結檔案,主程式檔案呼叫這些程式的函式介面是可以使用a庫或so庫,在主程式中只需要include含有庫中提供的函式介面宣告的標頭檔案即可。所以學會如何
Java的輸入和輸出、if...else if...else判斷、Java中列印陣列、Java中陣列排序、檢視函式方法的原始碼、命令列引數
Java的輸入和輸出: 輸入: import java.util.Scanner Scanner s = new Scanner(System.in); //通過new Scanner(System.in)建立一個Scanner物件,控制檯會一直等待輸入,直到敲回車鍵
學習筆記 c++ (boost庫,訊號和槽函式)
#include"iostream" #include"boost/signals.hpp" using namespace std; void my_slot(){ cout<<"my_slot()"<<endl; } void my_sl
win10 64位 vs2013編譯zlib庫和png庫
1.zlib編譯 其中第三步進入D:\zlib-1.2.11\zlib-1.2.11\contrib\vstudio\vc12 編譯完成後使用zlib: 1. 包含標頭檔案 屬性--C/C++--常規--附加包含目錄(新增包含.h的目錄) 如:F
迴圈 與 分支語句 和 字元函式庫cctype 檔案簡單處理
迴圈 for迴圈 while迴圈 do while迴圈 通常,入口條件迴圈比出口條件迴圈好,因為迴圈開始前對條件進行檢查 c++11基於範圍的for迴圈 對陣列(或容器類,如:vector和array)的每個元素執行相同操作 int a[5]={1,3,4,5,6}; f
學習Pytbon第十天 函式2 內建方法和匿名函式
print( all([1,-5,3]) )#如果可迭代物件裡所有元素都為真則返回真。0不為真print( any([1,2]) )#如果資料裡面任意一個數據為真返回則為真a= ascii([1,2,"天氣"])#把一個記憶體資料物件轉成字串表現形式打印出來print(type(a),[a])bin #把一個
python isinstance和issubclass,區分方法和函式,反射
一.isinstance和issubclass 1.isinstance class Animal: def eat(self): print('剛睡醒吃點兒東西') class Cat(Animal): def play(self): print
列舉排列的兩種方法:遞迴列舉 和 next_permutation()函式
照著《入門經典》理解整理了一下。 ① 以字典序生成1~n的排列 (遞迴列舉) 運用一層層的遞迴,形成一個解答樹。 #include<cstdio> using namespace std; void print_permutation_1(int n
js基礎--函式屬性、方法和建構函式
我們看到在JavaScript程式中,函式是值。對函式執行typeof運算會返回字串"function",但是函式是JavaScript中特殊的物件。因為函式也是物件,它們也可以擁有屬性和方法,就像普通的物件可以擁有屬性和方法一樣。甚至可以用Function()建構函式來建立新的函