Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 15:49   #1
TIT0
 
Регистрация: 08.03.2009
Сообщений: 4
По умолчанию Язык С, работа с файлами. (проверка кода)

Здравствуйте, уважаемые. Мне необходимо разобрать бинарный файл с данными, и создать из полученных данных новый файл с новыми данными.
Итак первый файл имеет структуру, привожу побайтово
CADR 0x00 (байт - 7бит значимых) (байт - 7бит значимых) (байт - 7бит значимых) 0х01 (байт - 7бит значимых) (байт - 7бит значимых) (байт - 7бит значимых) 0х02 (байт - 7бит значимых) (байт - 7бит значимых) (байт - 7бит значимых), то есть одна последовательность состоит из 16 байт(это комментарий к 16 в коде)
Это формат исходного бинарного файла. Мне необходимо преобразовать данные хранящиеся в "(байт - 7бит значимых)" к виду
(байт - 7бит значимых)+(байт - 7бит значимых)+(байт - 7бит значимых)=1 число, то есть сделать из трех байт одно число, типа long.
Затем эти 3 получившихся числа(созданных из 9 байт) сохранить в файл в формате ascii чтобы с ним можно было работать дальше.
вот моя программа которую я для этого написал, но я не уверен в правильности своего алгоритма создания числа из трех имеющихся байт, покритикуйте пожалуйста.
P.S. Тире читать как "в котором"
Программа
Код:
# include <stdio.h>

int main (void)
{
	long nFilelen,n,chnl0,chnl1,chnl2;
	nFilelen=0;
	int numread;
	
	n=0;
	
	FILE *f;
	FILE *f1;
	if((f1=fopen("bbb.mvs","wb")) == NULL) {
		printf("Can't create the output file");
	}
	if((f=fopen("aaa.bin","rb")) == NULL) { 
     printf ("Can't open input file");
    } 	
	fseek (f, 0, SEEK_END); // 
	nFilelen = ftell(f);	// получаем длинну файла в байтах
	//nFilelen=1000;
	fseek (f, 0, SEEK_SET);	// возвращаем указатель на начало файла
		
	char data_f[nFilelen];	// создаем массив для данных из файла, количество элементов = величина фала в байтах
	numread = fread((char *)data_f, sizeof(char), nFilelen, f);	// считываем данные из файла в массив
	if(numread<nFilelen){
		printf("Can't read the file");
	}
	
	while (n<(nFilelen/16))
	{
		chnl0=data_f[5+n];
		chnl0<<=8;
		chnl0|=data_f[6+n];
		chnl0<<=8;
		chnl0|=data_f[7+n]; // обработка канал 0
		
		chnl1=data_f[9+n];
		chnl1<<=8;
		chnl1|=data_f[10+n];
		chnl1<<=8;
		chnl1|=data_f[11+n]; // обработка канал 1
		
		chnl2=data_f[13+n];
		chnl2<<=8;
		chnl2|=data_f[14+n];
		chnl2<<=8;
		chnl2|=data_f[15+n]; // обработка канал 2
		
		//fprintf(f1,"chnl 0 %d | dt(5)- %d | dt(6)- %d | dt(7)- %d\n",chnl0,data_f[5+n],data_f[6+n],data_f[7+n]);
		//fprintf(f1,"chnl 1 %d | dt(9)- %d | dt(10)- %d | dt(11)- %d\n",chnl1,data_f[9+n],data_f[10+n],data_f[11+n]);
		//fprintf(f1,"chnl 2 %d | dt(13)- %d | dt(14)- %d | dt(15)- %d\n",chnl2,data_f[13+n],data_f[14+n],data_f[15+n]);
		fprintf(f1,"%d\t",chnl0);
		fprintf(f1,"%d\t",chnl1);
		fprintf(f1,"%d\t\n",chnl2);
		/*
		printf ("chnl 0 %x | data(5)- %x | data(6)- %x | data(7)- %x\n",chnl0,data_f[5+n],data_f[6+n],data_f[7+n]);
		printf ("chnl 1 %x | data(9)- %x | data(10)- %x | data(11)- %x\n",chnl1,data_f[9+n],data_f[10+n],data_f[11+n]);
		printf ("chnl 2 %x | data(13)- %x | data(14)- %x | data(15)- %x\n",chnl2,data_f[13+n],data_f[14+n],data_f[15+n]);
		*/
		n=n+16;
	}
	
	
	//printf ("chnl0 %x | data(5)- %x | data(6)- %x | data(7)- %x",chnl0,data_f[5],data_f[6],data_f[7]);
	
	//printf ("0 - %x | 1- %x | 2 - %x",chnl0[0],chnl_0[1],chnl_0[2]);
	fclose(f); // закрываем бинарный файл 
	fclose(f1); // закрываем  файл с готовыми данными 
	return 0;
}
TIT0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка правильности кода программы Petrowa C++ Builder 4 25.11.2015 18:41
Ввод куска кода с клавиатуры в процессе выполнения программы (язык Си) Florent Помощь студентам 4 05.02.2010 22:34
проверка правильности кода введенного в форму moidadir JavaScript, Ajax 1 13.07.2009 18:43
Первод кода макросов на язык програмирования zander Microsoft Office Excel 4 19.02.2009 21:59
Переведите кусок кода на понятный язык НЕпрограммисту grenkoff Помощь студентам 4 11.07.2008 17:33