程序清单13.2一个简单的压缩程序

该博客展示了一个名为reducto.c的程序,其功能是将文件压缩成原来的1/3。程序通过设置输入输出文件,拷贝文件名并添加.red后缀,在拷贝数据时每隔3个字符取1个字符写入输出文件,最后关闭文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//reducto.c -把文件压缩成原来的1/3!

include

include

include

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] = ‘\0’;
strcat(name, “.red”); //在文件名后添加.red
if ((out = fopen(name, “W”)) == NULL)
{ //以写模式打开文件
fprintf(stderr, “Can’t create output 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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值