⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 在linux下实现压缩
💻 C
字号:
/*************************************************************************
 * 				COPYRIGHT (C) 2007, Hans Qin
 *						ALL RIGHTS RESERVED
 *************************************************************************/
/*!
 * \main.c
 * This is a test file for zlib
 * the platform is FlySUN's at91rm9200 dvk2.3.       
 *
 * Module name: Super-C
 * Inmarsat C transiver controller
 *
 * $RCSfile: bootloader.c,v $                                                                
 * $Date: 2007/10/22 03:26:59 $ 
 * $Author: Hans Qin $
 * $Revision: 1.25.2.15 $          
 * 
 * \par	Update History
 * 		0.1.1	2007-10-22	Initial - Hans Qin\n
 */
 
#include <stdio.h>              /* printf */
#include <fcntl.h>              /* open */
#include <string.h>             /* bzero */
#include <stdlib.h>             /* exit */
#include <unistd.h>             /* read, write, close */
#include <sys/stat.h>           /* lstat */
#include <sys/types.h>
#include <errno.h>

#include "zlib/zlib.h"

unsigned long dest_len;
unsigned long sour_len;
unsigned char dest_buf[10240];
unsigned char sour_buf[10240];

int main (int argc, char *argv[])
{
    /******************************************************************************************/
	/*
	 *  test zlib compress&uncompress function
	 */
	int retval;
	FILE *file;
	struct stat info;
	unsigned long num;

	if(stat("test.txt", &info)!= -1){
		sour_len = info.st_size;
		printf("FILE LENGTH: %d\n",(unsigned int)sour_len);
	}else{
		perror("Unable to get file length!");
		exit(0);
	}
	file = fopen("test.txt","r");
	if(file != NULL){
		  num = fread(sour_buf,1,sour_len,file);
		  if(num == sour_len){
			printf("Read file OK!\n");
		  }else{
		   	printf("Read file FAIL!\n");	
		  }
		  fclose(file);
	}else{
		perror("opem file FAIL!\n");
		exit(0);
	}
	
	//compress the file 
	dest_len = 10240;
	retval = compress(dest_buf, &dest_len, sour_buf, sour_len);
	printf("reval: %d  dest_len: %d, sour_len: %d\n",retval,(unsigned int)dest_len,(unsigned int)sour_len);
	if(retval == Z_OK){
		file = fopen("compress.gz","wb");
		if(file != NULL){
			num = fwrite(dest_buf,1,dest_len,file);
			if(num != dest_len){
				perror("Write file fail!\n");
			}
			fclose(file);
		}
	}else{
		perror("\ncompress test.txt fail!\n");
		exit(0);
	}
	//uncompress the file
	sour_len = 10240;
	memset(sour_buf, 0, sour_len);
	retval = uncompress(sour_buf, &sour_len, dest_buf, dest_len);
    if(retval == Z_OK){
		printf("dest_len: %d, sour_len: %d",(unsigned int)dest_len,(unsigned int)sour_len);
		file = fopen("uncompress.txt","wb");
		if(file != NULL){
			num = fwrite(sour_buf,1,sour_len,file);
			if(num != sour_len){
				perror("Write file fail!\n");
			}
			fclose(file);
		}		
	}else{
		perror("\nuncompress fail!\n");
		exit(0);	
	}
	exit(0);
	/******************************************************************************************/
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -