| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 448 人关注过本帖
标题:求助 仨程序怎么分开。。
只看楼主 加入收藏
HBHGIMU
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-8-31
结帖率:0
收藏
 问题点数:0 回复次数:6 
求助 仨程序怎么分开。。
#include<iostream>
#include<fstream>
using namespace std;
void main()
{
ifstream ifile;
cout<<"请输入要打开的文件名:"<<endl;

char name[40];
cin>>name;
strcat(name,".bmp");
ifile.open(name,ios::binary);
cout<<"请输入要存储的文件名:"<<endl;
ofstream ofile;
char name2[40];
cin>>name2;
strcat(name2,".txt");
ofile.open(name2);
if(!ifile)
cout<<"1 fail"<<endl;
else if(!ofile)
cout<<"2 fail"<<endl;
else
{
    cout<<"ok"<<endl;
    /*从文件中输出所有bmp文件头和信息头*/
 unsigned char k;
 long int data[100];
    for   (int   i=0;i <54;i++)
    {ifile.read((char*)&k,sizeof(k));
data[i]=k;
   
}
    for(int n=0;n<3;n++)
    {    cout<<"请选择:1读取数据并存入文件 2判断是否为bmp文件 3判断所储存图片大小"<<endl;
    int m;
    cin>>m;
    switch(m)
    {
    case 1://读存数据
        {
        /*文件大小*/
cout<<"文件大小:"<<endl;
    ofile<<"文件大小:";
    for(int a=5;a>1;a--)
{
        cout<<data[a];
        ofile<<data[a];
        }
    cout<<endl;
    ofile<<endl;
/*位图数据起始位置*/
cout<<"位图数据起始位置:"<<endl;
    ofile<<"位图数据起始位置:";
    for(int b=13;b>9;b--)
{
        cout<<data[b];
        ofile<<data[b];
        }
    cout<<endl;
    ofile<<endl;
    /*位图数据宽*/
cout<<"位图数据宽:"<<endl;
    ofile<<"位图数据宽:";
    for(int c=21;c>17;c--)
{
        cout<<data[c];
        ofile<<data[c];
        }
    cout<<endl;
    ofile<<endl;
    /*位图数据高*/
cout<<"位图数据高:"<<endl;
    ofile<<"位图数据高:";
    for(int d=25;d>21;d--)
{
        cout<<data[d];
        ofile<<data[d];
        }
    cout<<endl;
    ofile<<endl;
    /*每个像素占用的位数*/
cout<<"每个像素占用的位数:"<<endl;
    ofile<<"每个像素占用的位数:";
    for(int e=29;e>27;e--)
{
        cout<<data[e];
        ofile<<data[e];
        }
    cout<<endl;
    ofile<<endl;
    /*位图的压缩类型*/
cout<<"位图的压缩类型:"<<endl;
    ofile<<"位图的压缩类型:";
    for(int f=30;f<34;f++)
{
        cout<<data[f];
        ofile<<data[f];
        }
    cout<<endl;
    ofile<<endl;

        break;}
    case 2://判断是否为bmp
{
if(data[0]==66&&data[1]==77)
cout<<"该文件是bmp文件"<<endl;
else
cout<<"该文件不是bmp文件"<<endl;
break;
}
    case 3://判断文件大小biSizeImage=(biWidth*biBitCount+31)/32*4*biHeight
{
int biSizeImage,biWidth,biBitCount,biHeight;
biWidth=data[18]+data[19]*100+data[20]*10000+data[21]*1000000;
biBitCount=data[28]+data[29]*100;
biHeight=data[22]+data[23]*100+data[24]*10000+data[25]*1000000;
biSizeImage=(biWidth*biBitCount+31)/32*4*biHeight;
cout<<"biWidth:"<<biWidth<<endl;
cout<<"biBitCount:"<<biBitCount<<endl;
cout<<"biHeight:"<<biHeight<<endl;
cout<<"biSizeImage:"<<biSizeImage<<endl;
break;
}
    }
    }

}
ifile.close();
ofile.close();
}


打开.bmp文件,访问位图文件的文件头和信息头,得到该位图文件的下列数据:整个位图文件大小、位图数据起始位置、位图数据的宽和高、每个像素占用的位数、位图的压缩类型;显示上述信息并存入文本文件。

用C++判断一个文件是否为bmp文件

判断一个BMP文件中所存储的图片为多大?。



这仨题。。怎么分成一个个的啊
搜索更多相关主题的帖子: include 
2012-08-31 22:18
Aidoneus
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2012-8-2
收藏
得分:0 
没看懂、
2012-09-06 11:13
zhaojigao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:59
注 册:2012-9-6
收藏
得分:0 
吧switch里面的case语句里面的内容一个个写开就可以了!你的源代码我试过了 能通过 执行结果正常 不过就是你的case语句里面写的太乱了,我建议可以定义三个函数 来分别实现你的三个case的功能 这样代码看起来比较清爽一点 ,方便其他人员理解你的意思!
2012-09-06 16:03
zhaojigao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:59
注 册:2012-9-6
收藏
得分:0 
#include<iostream>
 #include<fstream>
 using namespace std;
 void main()
 {
 ifstream ifile;
 cout<<"请输入要打开的文件名:"<<endl;
 char name[40];
 cin>>name;
 strcat(name,".bmp");
 ifile.open(name,ios::binary);
 cout<<"请输入要存储的文件名:"<<endl;
 ofstream ofile;
 char name2[40];
 cin>>name2;
 strcat(name2,".txt");
 ofile.open(name2);
 if(!ifile)
 cout<<"1 fail"<<endl;
 else if(!ofile)
 cout<<"2 fail"<<endl;
 else
 {
     cout<<"ok"<<endl;
     /*从文件中输出所有bmp文件头和信息头*/
     unsigned char k;
     long int data[100];
     for (int   i=0;i <54;i++)
     {
         ifile.read((char*)&k,sizeof(k));
         data[i]=k;
     }
     /*文件大小*/
             cout<<"文件大小:"<<endl;
             ofile<<"文件大小:";
             for(int a=5;a>1;a--)
             {
               cout<<data[a];
               ofile<<data[a];
             }
           cout<<endl;
           ofile<<endl;
            /*位图数据起始位置*/
            cout<<"位图数据起始位置:"<<endl;
            ofile<<"位图数据起始位置:";
            for(int b=13;b>9;b--)
            {
              cout<<data[b];
              ofile<<data[b];
            }
            cout<<endl;
            ofile<<endl;
            /*位图数据宽*/
            cout<<"位图数据宽:"<<endl;
            ofile<<"位图数据宽:";
           for(int c=21;c>17;c--)
           {
             cout<<data[c];
             ofile<<data[c];
           }
          cout<<endl;
          ofile<<endl;
          /*位图数据高*/
          cout<<"位图数据高:"<<endl;
          ofile<<"位图数据高:";
          for(int d=25;d>21;d--)
          {
            cout<<data[d];
            ofile<<data[d];
          }
          cout<<endl;
          ofile<<endl;
          /*每个像素占用的位数*/
          cout<<"每个像素占用的位数:"<<endl;
          ofile<<"每个像素占用的位数:";
          for(int e=29;e>27;e--)
          {
            cout<<data[e];
            ofile<<data[e];
          }
          cout<<endl;
          ofile<<endl;
          /*位图的压缩类型*/
          cout<<"位图的压缩类型:"<<endl;
          ofile<<"位图的压缩类型:";
          for(int f=30;f<34;f++)
          {
            cout<<data[f];
            ofile<<data[f];
          }
          cout<<endl;
          ofile<<endl;
}
 ifile.close();
 ofile.close();
 }
//////这是打开.bmp文件,访问位图文件的文件头和信息头,得到该位图文件的下列数据:整个位图文件大小、位图数据起始位置、位图数据的宽和高、每个像素占用的位数、位图的压缩类型;显示上述信息并存入文本文件。
2012-09-06 16:22
zhaojigao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:59
注 册:2012-9-6
收藏
得分:0 
#include<iostream>
 #include<fstream>
 using namespace std;
 void main()
 {
 ifstream ifile;
 cout<<"请输入要打开的文件名:"<<endl;
 char name[40];
 cin>>name;
 strcat(name,".bmp");
 ifile.open(name,ios::binary);
 
 if(!ifile)
 cout<<"1 fail"<<endl;
 else
 {
     cout<<"ok"<<endl;
     /*从文件中输出所有bmp文件头和信息头*/
     unsigned char k;
     long int data[100];
     for (int   i=0;i <54;i++)
     {
         ifile.read((char*)&k,sizeof(k));
         data[i]=k;
     }
     if(data[0]==66&&data[1]==77)
     cout<<"该文件是bmp文件"<<endl;
     else
     cout<<"该文件不是bmp文件"<<endl;
}
 ifile.close();
 }
////用C++判断一个文件是否为bmp文件
 
2012-09-06 16:22
zhaojigao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:59
注 册:2012-9-6
收藏
得分:0 
#include<iostream>
 #include<fstream>
 using namespace std;
 void main()
 {
 ifstream ifile;
 cout<<"请输入要打开的文件名:"<<endl;
 char name[40];
 cin>>name;
 strcat(name,".bmp");
 ifile.open(name,ios::binary);
 
 if(!ifile)
 cout<<"1 fail"<<endl;
 else
 {
     cout<<"ok"<<endl;
     /*从文件中输出所有bmp文件头和信息头*/
     unsigned char k;
     long int data[100];
     for (int   i=0;i <54;i++)
     {
         ifile.read((char*)&k,sizeof(k));
         data[i]=k;
     }
     int biSizeImage,biWidth,biBitCount,biHeight;
      biWidth=data[18]+data[19]*100+data[20]*10000+data[21]*1000000;
      biBitCount=data[28]+data[29]*100;
      biHeight=data[22]+data[23]*100+data[24]*10000+data[25]*1000000;
      biSizeImage=(biWidth*biBitCount+31)/32*4*biHeight;
      cout<<"biWidth:"<<biWidth<<endl;
      cout<<"biBitCount:"<<biBitCount<<endl;
      cout<<"biHeight:"<<biHeight<<endl;
      cout<<"biSizeImage:"<<biSizeImage<<endl;
}
 ifile.close();
 }
2012-09-06 16:23
zhaojigao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:59
注 册:2012-9-6
收藏
得分:0 
以上是我根据自己的理解所做的    至于不对或者是有错的地方还清多多包涵啊!
2012-09-06 16:24
快速回复:求助 仨程序怎么分开。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026651 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved