一图像处理文件 在VC里为什么运行不成功??
#include <bitset>#include <iostream>
using namespace std;
#include <stdio.h>
#include <conio.h>
void main()
{
bitset<8> A; //设置一个8位长的位数组以便存储图中每一字节的数据
int a[134],num=1; //数组用于存储此图132字节的数据
for(int i=0;i<=133;i++) a[i]=0; //初始化a
FILE *fp,*fq,*fr;
fp=fopen("c://000//bmp//bmp-1.bmp","rb");
fq=fopen("c://000//bmp//bmp-1change.bmp","wb");
fr=fopen("c://000//bmp//bmp-1.txt","w");
while((!feof(fp))&&num<63) //此步用于将其BMP格式的头直接赋给指针fq
{
char ch=fgetc(fp);
fputc(ch,fq);
num++;
}
fseek(fp,63L,0); //实际数据距文件头有62字节的偏移
fseek(fq,63L,0);
num=1;
while((!feof(fp))&&num<133) //将位图的实际数据存在a中以便后面转换所用
{
a[num]=fgetc(fp);
num++;
}
i=0;
for(int k=num-2;k>=1;k--) //位图数据的存储与看到的图的样式的关系是上下颠倒的所以a从后往前
{ i++;
if(i!=0 && i%4==0)
{
for(int j=0;j<=3;j++)
{
bitset<8> A(a[k+j]);
cout<<A;
for(int l=7;l>=0;l--)//将位图的数据存为文本文件
{
if(A.at(l)==true) fprintf(fr,"%d",1);
else fprintf(fr,"%d",0);
}
if(A.at(0)==true) A.set(0,false); //如果这个字节的最后一位为1把它变为0
a[k+j]=A.to_ulong();
}
fprintf(fr,"\n");
cout<<"\n";
}
}
for(i=1;i<=132;i++) //按读取的方法和顺序再存回去
fputc(a[i],fq);
fclose(fp);
fclose(fq);
fclose(fr);
cout<<"任击一键退出!"<<endl;
getch();
}