Прежде чем выкладывать свои исходники на обозрение, ознакомься, пожалуйста, хотя бы поверхностно с
вот этим документиком.
Теперь проведём работу над ошибками:
Код
int nFonts, width, height, filesize, palletesize;
int crap, shit, a[nFonts], i, x, n;
Мне интересно, как ты собрался объявлять статический массив, задавая размер динамической переменной? Если программа компилируется (что странно), то это не значит, что она тебя поняла.
Используй динамическое выделение памяти.
Код
if (argc != 3){
system("PAUSE");
return 0;
}
Это проверка на количество аргументов, а не на наличие файлов.
Код
fnt = fopen(argv[1], "rb");
if (fnt == NULL){
printf("Can't open %s!", argv[1]);
}
printf("Opened %s!\n", argv[1]);
А вот это уже проверка на наличие файла. К слову, программа у тебя будет выполняться даже если файла нет, так что позаботься о наличии return'а сразу же после сообщения об ошибке.
Код
for (i = 0; i < nFonts; i++){
fread(&crap, 4, 1, fnt);
fread(&height, 4, 1, fnt);
fread(&shit, 4, 1, fnt);
fread(&a[nFonts], 4, 1, fnt);
}
Вообще не понимаю смысла этих манипуляций. Данные считываются в переменные, и тут же в переменные считываются другие данные. Смысл? Опиши структуру, создай массив этих структур и читай туда.
А файл, между прочим, надо ещё и закрывать.
И вообще, я не вижу процедуры сохранения в bmp, в чём помогать то? Или помочь - это сделать всё за тебя?
Цитата
0х01 - к-во букв в шрифте.
0х02 -- 0х1С3 - Заголовок с шириной, высотой, оси X и Y.(Порядок такой: 4байта - ось Х, 4байта - высота, 4байта - ширина, 4байта - ось Y)
0х1С4 -- 0х1Е4 - Палитра.
Не лепи всякую чушь, ознакомься с тем, что такое смещение (адрес/позиция/...).