Тут всё довольно просто. Есть две системы записи - Интеловская и Моторола. Отличаются они тем, что в одной младший бит пишется справа и по возрастанию, а в другой - наоборот, слева. Можешь в принципе писать по байтам (это также поможет справиться с первой проблемой)
Проблема номер раз: Ты пишешь integer'ами, каждый из которых 4 байта. А в оригинале я так понимаю 3 байта. Разбивай число по байтам и пиши так, и учти способ записи чисел из начала этого сообщения Подмигивающий У тебя переменная "с" - int (4 байта). Кстати... Можешь писать функцией fwrite. Там можно указать количество записываемых байт.
Вот что получилось.
#include <stdio.h>
#include <windows.h>
int main (int argc, char * argv[])
{
int c;
FILE *f;
f=fopen(argv[2],"wb");
c=GetPrivateProfileInt("General","Proto_ID",0,argv[1]);
fwrite(&c, 3, 1, f);
c=GetPrivateProfileInt("General","Description_ID",0,argv[1]);
fwrite(&c, 3, 1, f);
c=GetPrivateProfileInt("General","FRM_ID",0,argv[1]);
fwrite(&c, 3, 1, f);
fclose(f);
}
Теперь всё нормально. Но я не понял как писать в формате моторола, может есть функция?
Я только неделю изучаю язык программирования си, поэтому не знаю как многие вещи делать.
P.S. А вообще, оригинально писать под Windows используя gcc Веселый Нет, я всё понимаю - но если используешь кросплатформенный компилятор - зачем привязываться к API винды? Улыбка
Можно сделать через fscanf
fscanf(f, "Proto_ID=%d\n", &c); и так далее