考验

zds1 2001-12-17 09:54:38
我的程序是读BMP文件,数据读出是负数为什么,我把数据改为unsigned int也不行
#include <stdio.h>
#include <malloc.h>
#include <afx.h>
struct PIXMAP
{
int rowbytes;
int height;
int size;
unsigned int * add;
};



struct IMAGE
{
int width;
int height;
int size;
char * address;
char head;
};


void main()
{

unsigned int width,height,size=NULL;
unsigned int r=NULL;
unsigned g=NULL;
unsigned int b=NULL;
unsigned int * data;
unsigned int * p=NULL;
char *y,*u,*v;
FILE * fp=NULL;
char path[20];
BITMAPFILEHEADER *head;
BITMAPINFOHEADER *info;
struct PIXMAP pixmap;
struct IMAGE plane;
printf("请输入文件路径\n");
scanf("%s",path);
if((fp=fopen(path,"rb+"))==NULL)
{
printf("空文件\n");
return;
}

else
{
head=(BITMAPFILEHEADER *)malloc(sizeof(BITMAPFILEHEADER));

info=(BITMAPINFOHEADER *)malloc(sizeof(BITMAPFILEHEADER));

fread(head,sizeof(BITMAPFILEHEADER),1,fp);
printf("%d\n",head->bfOffBits);
printf("%d\n",head->bfSize);

fread(info,sizeof(BITMAPINFOHEADER),1,fp);
width=info->biWidth;

height=info->biHeight;
printf("%d\n",info->biBitCount);
pixmap.height=height;

pixmap.size=head->bfSize-head->bfOffBits;


data=(unsigned int *)malloc(pixmap.size);
printf("%d\n",pixmap.size);

y=(char *)malloc(pixmap.size);
u=(char *)malloc(pixmap.size/4);
v=(char *)malloc(pixmap.size/4);
fread(data,pixmap.size,1,fp);
pixmap.add=data;
unsigned int g=*data;
printf("%d\n",g);
fclose(fp);


}

/* if(info->biBitCount==24)
{

pixmap.rowbytes=width*3;
for(int i=0;i<info->biHeight;i++)
{
pixmap.add+=i*pixmap.rowbytes;
for(int j=0;j<info->biWidth;j++)
{*/


p=pixmap.add;
r=*p++;
g=*p++;
b=*p++;
printf("%d,%d,%d\n",r,g,b);
// }



// }


// }
/* if(info->biBitCount==32)
{
}
else
{
}
free(data);
free(y);
free(u);
free(v);
free(head);
free(info);*/
}
...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zds1 2001-12-17
  • 打赏
  • 举报
回复
不行,打出的数有10位
liuto 2001-12-17
  • 打赏
  • 举报
回复
你用%d打印出来当然是负数,用%u
代码下载地址: https://pan.quark.cn/s/068306a56640 在交通运输科学范畴内,交通流量分配是探讨交通系统内交通负荷如何在各个道路路段间进行合理分配的核心议题。交通流分配技术主要应用于模拟和推演交通系统的运行状态,旨在为城市规划人员与交通工程师提供优化道路布局的参考,进而缓解交通拥堵现象,提升道路交通的整体效能。以下将对"交通流分配技术"进行深入阐述: 1. **全部或无分配(All-or-Nothing Distribution)** 全部或无分配是一种基础的交通流分配策略。该技术依据最短路径准则,预设所有从发源地(Origin)至目的地(Destination)的车辆都将选择路程最短的路线。倘若存在多条等长路径,则采用随机方式确定其中一条。此类方法未将交通拥堵因素纳入考量,因为一旦选定路径,便假定所有交通量将沿此路径通行,即便这可能导致部分路段出现超负荷状况。 2. **逐步分配(Progressive Assignment)** 逐步分配技术顾及了交通网络的动态特征。该算法通过逐步优化流量配置,力求使网络内行驶的总代价(诸如通行时间、距离等指标)最小化。运算过程始于初始的全部或无分配状态,随后逐步修正路径选择,直至网络达成稳定状态,即每次流量修正后,总代价的变动幅度不再明显。此方法更贴近现实交通场景,因为车辆会依据即时路况选择最优路径。 3. **迭代平均分配(Iterative Average Distribution)** 迭代平均分配是一种对逐步分配技术的优化版本,其更侧重于实现网络流量的均衡化。在每一轮迭代过程中,算法不仅评估当前路径的优化程度,同时参考前一次迭代的流量配置。通过融入平均化理念,该方法能更有效地分散交通...

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧