Просмотр полной версии : Трабл с чтением из файла...
Возник непонятный трабл с открытием файла...
Буду рад помощи...
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <mem.h>
#include <stdlib.h>
void main(){
unsigned char buff[199][319];
unsigned char sprite[39][31];
unsigned char far *screen = (char far *)MK_FP(0xa000,0);
int i,j,k;
FILE *bmp;
REGPACK r;
if((bmp=fopen("1.bmp","rb"))==NULL){
printf("Cant open file\n");
getch();
}else{
fseek(bmp,1078,0);
fread(&sprite,sizeof(sprite),1,bmp);
fclose(bmp);
for(i=0;i<=39;i++){
for(j=0;j<=31;j++){
buff[i][j]=sprite[i][j];
}
}
r.r_ax=0x13;
intr(0x10,&r);
k=0;
for(i=0;i<=199;i++){
for(j=0;j<=319;j++){
screen[k]=buff[i][j];
k++;
}
}
sleep(5);
r.r_ax=0x3;
intr(0x10,&r);
getch();
}
}
Написал бы что компилятор выдает
Дык в том то и дело что компилятор молчит цука
где именно баг добавь меня в ИСК № 465-497-196
где именно баг
Непроходи открытие файла (
if((bmp=fopen("1.bmp","rb"))==NULL){
printf("Cant open file\n");
getch();
}else{
проверь директорию. попробуй указывать абсолютный путь до файла .
Delimiter
26.04.2008, 18:03
абсолютный путь нужно указывать всегда, чтоб не думать какая директория в данный момент дефаултовая.
все предложения нащет пути втопку .. пока нетрогаю масив buff все идет отлично . нормально читаетса файл. выводитса данные других масивов в бижеобуфер .. отображаетса все в разрешении 320*200*256 норм .. . но как токо пишу се тв масив buff то пц ( а он нада позарез для формирования изображеня перед выводом .. ибо нада анимировать примерно 10 спрайтов одновременно
все предложения нащет пути втопку
Вы очень вежливы когда просите о помощи.
fread(&sprite,sizeof(sprite),1,bmp);
&sprite - ?
sizeof(sprite) = 4
Вы очень вежливы когда просите о помощи.
Еслибы проблема была в пути я бы не просил о помощи. И пожалуста ненадо "выкать"
fread(&sprite,sizeof(sprite),1,bmp);
По-моему, это переполнение :)
разве не так:
fread(sprite,31*39,1,bmp);
АХТУНГ:
for(i=0;i<=39;i++){
for(j=0;j<=31;j++){
buff[i][j]=sprite[i][j];
}
вместо <= должно быть <
END АХТУНГ
Ахтунги приняты во внимание но проблема осталась прежней. Методом каментированием всего подряд выяснил кое что.
Код работает ели закоментить в которых выполняютса операции над масивом buff строки:
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <mem.h>
#include <stdlib.h>
void main(){
unsigned char buff[199][319];
unsigned char sprite[39][31];
unsigned char far *screen = (char far *)MK_FP(0xa000,0);
int i,j,k;
FILE *bmp;
REGPACK r;
if((bmp=fopen("c:\\1.bmp","rb"))==NULL){
printf("Cant open file\n");
getch();
}else{
fseek(bmp,1078,0);
fread(&sprite,36*31,1,bmp);
fclose(bmp);
//
// for(i=0;i<39;i++){
// for(j=0;j<31;j++){
// buff[i][j]=sprite[i][j];
// }
// }
//
r.r_ax=0x13;
intr(0x10,&r);
k=0;
//
// for(i=0;i<199;i++){
// for(j=0;j<319;j++){
// screen[k]=buff[i][j];
// k++;
// }
// }
//
sleep(5);
r.r_ax=0x3;
intr(0x10,&r);
getch();
}
}
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot