用CB16.01调试C Primer Plus程序清单13.2 reducto.c程序
codeblocks吧
全部回复
仅看楼主
level 3
Lucifer_z_tl 楼主
用CB16.01调试C Primer Plus程序清单13.2 reducto.c程序
程序清单如下:
/*reducto.c--把你的文件压缩为原来的三分之一*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN 40
int main(int argc,char * argv[])
{
FILE *in,*out;
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 couldn't open the file \"%s\"\n",argv[1]);
exit(2);
}
//实现输入
strcpy(name,argv[1]);
strcat(name,".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);
//收尾工作
if(fclose(in) != 0 || fclose(out) != 0)
fprintf(stderr,"Error in closing files\n");
return 0;
}
功能怎么实现对文件的压缩啊?
“可执行文件名为reducto。我们用它对包含下面这行内容的文件eddy进行操作:
So even Eddy came oven ready.
命令如下:
reducto eddy
输出结果被写入文件名为eddy.red的文件中。屏幕不产生任何输出,但打开文件eddy.red,会显示内容:
Send money”
请问各位大神,这个例子应该怎么操作才能做出实例说明的结果?
2017年07月22日 03点07分 1
level 3
Lucifer_z_tl 楼主
2017年07月22日 03点07分 2
level 1
dd,我也正巧读到了这部分
2017年07月26日 13点07分 3
level 1
楼主,我是新建了两个文本文件,其中一个是被in指针指向,写上一些字符,另外一个被out指针指向,空白文件作为接收端
即out=fopen(argv[2],"w"),去掉了那个name部分。然后在cmd中将exe和两个文本的路径拖拽进来,运行之后,Out指向的文件就会得到题意中要求的字符。
可能是和作者用的系统不一样,我用的是windows,当时学重定向的时候就和书里的做法不完全一致。
2017年07月26日 14点07分 4
具体代码能发下吗
2017年09月07日 07点09分
level 1
好巧,我也碰到了这个问题。
.red 类型的文件我们无法直接打开,简单些处理,我将代码改为.txt 见下图
我们将eddy.txt 拖向 可执行文件(我这里是20180207.exe)即可执行生成eddy.txt.txt
2018年02月07日 13点02分 5
1