欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一个简单的文件压缩程序

程序员文章站 2022-03-08 13:16:27
//reducto.c--把文件压缩成原来的1/3!#include #include //提供exit()的原型#include //提供strncpy()、strcat()的原型#define LEN 40int main(int argc, char *argv[]){ FILE *in, *out; //声明两个个指向FILE的指针 int ch; char name...
//reducto.c--把文件压缩成原来的1/3!
#include <stdio.h>
#include <stdlib.h> //提供exit()的原型
#include <string.h> //提供strncpy()、strcat()的原型
#define LEN 40
int main(int argc, char *argv[])
{
    FILE *in, *out; //声明两个个指向FILE的指针
    int ch;
    char name[LEN]; //储存输出文件名
    int count = 0;
    //检查命令行参数
    if (argc < 2)
    {
        fprintf(stderr, "Usage:%s filename\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    //设置输入
    if ((in = fopen(argv[1], "r")) == NULL)
    {
        fprintf(stderr, "I couldn`t open the file %s\n", argv[1]);
        exit(EXIT_FAILURE);
    }
    //设置输出
    strncpy(name, argv[1], LEN - 5); //拷贝文件名
    name[LEN - 5] = '\n';
    strcat(name, ".red"); //在文件名后添加.red
    if ((out = fopen(name, "w")) == NULL)
    {
        fprintf(stderr, "Can`t create file.\n");
        exit(3);
    }
    //拷贝数据
    while ((ch = getc(in)) != EOF)
        if (count++ % 3 == 0)
            putc(ch, out); //打印3个字符中的第一个字符
    //收尾工作
    if (fclose(in) != 0 || fclose(out) != 0)
        fprintf(stderr, "Error in closing files\n");
    return 0;
}

一个简单的文件压缩程序

本文地址:https://blog.csdn.net/weixin_44374594/article/details/107299074