Please, help: binary file reading.
От: spectre Россия spectre.50megs.com
Дата: 12.08.03 12:17
Оценка:
Написал программу в Matlabe, а теперь пытаюсь её перегнать в CBuilder, а раньше в Си ничего такого не проделывал. Поэтому подскажите пожалуйста, как прочитать полностью двоичный файл, с форматом данных 'unsigned char' в Matlab это выглядит так:
datavector=fread(file_id,inf,'uchar');
как это будет выглядеть в Си?

Пробовал читать так:

   FILE *streamex;
   char data[15360];
   streamex=fopen("example.xls","r");
   fread(data,15360,1,streamex);
   printf("%s\n", data);



В результате на экран выводятся пять символов и дальше пусто.
Хотя в результате должны получиться 15360 целых чисел типа char.

Что я непавильно делаю?
Re: Please, help: binary file reading.
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.08.03 12:32
Оценка:
Здравствуйте, spectre, Вы писали:

S>Написал программу в Matlabe, а теперь пытаюсь её перегнать в CBuilder, а раньше в Си ничего такого не проделывал. Поэтому подскажите пожалуйста, как прочитать полностью двоичный файл, с форматом данных 'unsigned char' в Matlab это выглядит так:

S>datavector=fread(file_id,inf,'uchar');
S>как это будет выглядеть в Си?

S>Пробовал читать так:


S>
S>   FILE *streamex;
S>   char data[15360];
S>   streamex=fopen("example.xls","r");
S>   fread(data,15360,1,streamex);
S>   printf("%s\n", data);
S>



S>В результате на экран выводятся пять символов и дальше пусто.

S>Хотя в результате должны получиться 15360 целых чисел типа char.

S>Что я непавильно делаю?


1. не проверяешь результат функции fread
2. рассчитываешь, что функция printf будет печатать хоть что-то после первого же нуля. В C символ с кодом 0 является признаком концы строки
3. Вообще-то со времен Кернигана и Ритчи изобрели С++. Посмотри хелп по TFileStream, станет проще жить.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Please, help: binary file reading.
От: s.ts  
Дата: 12.08.03 13:26
Оценка:
Здравствуйте, spectre, Вы писали:

S>Написал программу в Matlabe, а теперь пытаюсь её перегнать в CBuilder, а раньше в Си ничего такого не проделывал. Поэтому подскажите пожалуйста, как прочитать полностью двоичный файл, с форматом данных 'unsigned char' в Matlab это выглядит так:

S>datavector=fread(file_id,inf,'uchar');
S>как это будет выглядеть в Си?

есть "C Matlab Library" — там д.быть продублированы встроенные функции матлаба
Re: Please, help: binary file reading.
От: LaptevVV Россия  
Дата: 12.08.03 13:35
Оценка: 10 (1)
Здравствуйте, spectre, Вы писали:

S>Написал программу в Matlabe, а теперь пытаюсь её перегнать в CBuilder, а раньше в Си ничего такого не проделывал. Поэтому подскажите пожалуйста, как прочитать полностью двоичный файл, с форматом данных 'unsigned char' в Matlab это выглядит так:

S>datavector=fread(file_id,inf,'uchar');
S>как это будет выглядеть в Си?

S>Пробовал читать так:


S>
S>   FILE *streamex;
S>   char data[15360];
S>   streamex=fopen("example.xls","r");
S>   fread(data,15360,1,streamex);
S>   printf("%s\n", data);
S>


S>В результате на экран выводятся пять символов и дальше пусто.

S>Хотя в результате должны получиться 15360 целых чисел типа char.

S>Что я непавильно делаю?


1. Встречный вопрос: что за "мифическое число" 15360?
2. streamex=fopen("example.xls","rb"); // чтение двоичное
3. if ((streamex=fopen("example.xls","rb")!=NULL) // проверка на правильность открытия
4. long ttt=fread(data,15360,1,streamex); // выдает количество реально прочитанных байтов
5. Двоичный файл printfом выводить нельзя! У тебя выведется только то, что в памяти до первого нулевого байта, который считается концом строки.
А главное — зачем?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.