本帖最后由 嗨,强哥! 于 2014-7-14 15:22 编辑
/**************************************************************************
《C Primer Plus》第五版第十三章,程序例题(P361):
reducto.c --- 把您的文件压缩三分之一!
一个简单的文件压缩程序:这个程序把一个文件中的数据有选择的复制到另一个文件中
程序通过只保留每3个字符中的第3个字符来压缩地一个文件,最后把压缩后的文本写入
第二个文件中,第二个名字有第一个名字后加 .red 而得来。
***************************************************************************/
#include <stdio.h>
#include <stdlib.h> //为了调用exit ()
#include <string.h> //为strcpy () 和 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 (1);
}
//实现输入
if ((in = fopen (argv[1], "r")) == NULL)
{
fprintf (stderr, "I coundn't open the file \"%s\"\n",argv[1]);
exit (2);
}
//实现输出
strcpy (name, argv[1]); //把文件名复制到数组中
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个字符中的第3个
//收尾工作
if (fclose (in) != 0 || fclose (out) != 0)
fprintf (stderr, "Error in closing files\n");
sleep(50000);
return 0;
}
|