网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月09日漏签0天
c++吧 关注:618,596贴子:2,111,264
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回c++吧
>0< 加载中...

求大神帮忙修改啊

  • 只看楼主
  • 收藏

  • 回复
  • 蒼天有井獨空
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
采用最简单的“空白压缩法”,即压缩一段文本中的连续空格。例如:
源数据流:
X Y Z Q R S
压缩后的数据流:
X Y Z Sc 4 Q R S
Sc代表压缩指示字符,还原时,扫描到有此字符,均按紧跟其后的数字恢复相应长度的空格序列,其余字符原样输出。
如何选取压缩指示字符?在ASCII码,除字母、数字、符号外,还有一些扩展码,它们属于不可显字符,可以采用其中之一作为压缩指示符。如ASCII码为0的NUL。
求大神帮忙,这个程序只能压缩一段空白,并且空白在前面和后面都无法压缩,实在不知道怎么弄了
#include<fstream>
#include<iostream>
using namespace std;
void CompressedFiles();
void DecompressedFiles();
void main( )
{
int c;
while(1)
{
//输出选择菜单
cout<<"***********************************************"<<endl;
cout<<"1.压缩"<<endl;
cout<<"2.解压"<<endl;
cout<<"3.退出"<<endl;
cout<<"***********************************************"<<endl;
cin>>c; //录入选择结果
//判断用户输入并执行相应操作,即调用调用相应的函数
if(c==1)
CompressedFiles();
if(c==2)
DecompressedFiles();
if(c==3)
break;
if(c!=1&&c!=2&&c!=3) //防止输入错误
continue;
}
}
/*参数:无
返回值:无
函数功能:用"空白压缩法"实现对指定文件的压缩*/
void CompressedFiles()
{
char ch;
int n=1;
char name[20],newname[30];
char fname[]={"x"},address[]={"d:\\文件压缩管理\\"};
char iaddress[100],oaddress[100];
cout<<"要压缩的文件需放在“d:\\文件压缩管理\\”目录下。"<<endl;
cout<<"请输入要压缩的文件名。"<<endl;
cin>>name;
strcpy(newname,fname);
strcat(newname,name);
strcpy(iaddress,address);
strcat(iaddress,name);
strcpy(oaddress,address);
strcat(oaddress,newname);
ifstream ifile(iaddress);
if(!ifile)
{
cout<<name<<" cannot be open!"<<endl;
return;
};
ofstream ofile(oaddress);
if(!ofile)
{
cout<<newname<<" cantnot be opened!"<<endl;
return;
};
while (ifile.get(ch))
{
if(ch>=33&&ch<=126)
ofile.put(ch);
if(ch==32)
{
ifile.get(ch);
while(ch==32)
{
n++;
ifile.get(ch);
};
if(n==1)
{
ofile.put(32);
ofile.put(ch);
};
if(n>=2)
{
n=n+48;
ofile.put(24);
ofile.put(n);
ofile.put(ch);
};
};
}
ifile.close();
ofile.close();
cout<<"文件已压缩完成。"<<endl;
};
/*参数:无。
返回值:无。
函数功能:实现对指定文件的解压缩。*/
void DecompressedFiles()
{
char ch;
int n;
char name[20],newname[30];
char fname[]={"解压缩"},address[]={"d:\\文件压缩管理\\"};
char iaddress[100],oaddress[100];
cout<<"要解压缩的文件需放在“d:\\文件压缩管理\\”目录下。"<<endl;
cout<<"请输入要解压缩的文件名。"<<endl;
cin>>name;
strcpy(newname,fname);
strcat(newname,name);
strcpy(iaddress,address);
strcat(iaddress,name);
strcpy(oaddress,address);
strcat(oaddress,newname);
ifstream ifile(iaddress);
if(!ifile)
{
cout<<name<<" cannot be open!"<<endl;
return;
};
ofstream ofile(oaddress);
if(!ofile)
{
cout<<newname<<" cantnot be opened!"<<endl;
return;
};
while (ifile.get(ch))
{
if(ch>=32&&ch<=126)
ofile.put(ch);
if(ch==24)
{
ifile.get(ch);
n=(int)ch;
for(int i=1;i<=n;i++)
{
ofile.put(32);
}
};
}
ifile.close();
ofile.close();
cout<<"文件已解压缩完成。"<<endl;
};


  • 蒼天有井獨空
  • =
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自顶 求大神啊


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示