Написал программу в 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.
Что я непавильно делаю?
Здравствуйте, 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, станет проще жить.
Здравствуйте, 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","r
b"); // чтение двоичное
3. if ((streamex=fopen("example.xls","rb")!=NULL) // проверка на правильность открытия
4. long ttt=fread(data,15360,1,streamex); // выдает количество реально прочитанных байтов
5. Двоичный файл printfом выводить нельзя! У тебя выведется только то, что в памяти до первого нулевого байта, который считается концом строки.
А главное — зачем?