реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> грабли с fread()/fwrite(), в симуляторе 55xx в CCS3.1
Doka
сообщение Nov 30 2006, 00:41
Сообщение #1


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



ситуация:
надо прочесть файл и записать файл (файлы разные) в программном симуляторе CCS

прогоняю один и тот же код (естественно с разными хидерами типов данных), в MSVC 6.0 и в в CCS3.1.
работает все за исключением правильной работы функций fread()/fwrite()

в файл записываются только младшие байты массива =(

вроде Си он и в африке Си. На всякий случай открыл spru281 - С/C++ compiler UG: передаваемые параметры те, вроде всё соблюл:
Код
fwrite(*массив, 2(байта), размер_массива, *имя_файла)

кто сталкивался?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
marazm
сообщение Nov 30 2006, 01:06
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 3-03-06
Пользователь №: 14 920



Цитата(Doka @ Nov 30 2006, 06:41) *
в файл записываются только младшие байты массива =(


В том ЦСП, в чаре, 8 или 16 бит?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 30 2006, 01:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Doka @ Nov 30 2006, 00:41) *
кто сталкивался?


Если C55xx - то он усекает 55-ые 16-битные чары до интеловских, 8-битных, просто отбрасывая старшую часть.
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 30 2006, 10:37
Сообщение #4


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(SM @ Nov 30 2006, 01:45) *
Если C55xx - то он усекает 55-ые 16-битные чары до интеловских, 8-битных, просто отбрасывая старшую часть.

да вот пользуюсь я как раз не чаром:

Код
  typedef short  s16;
...
  s16 a[SIZE];
...
  fwrite(a, sizeof(s16), SIZE, f_out);


или можно переформулировать вопрос так: чем надо пользоваться, чтобы правильно записывать файлы fwrite() ?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
alex_os
сообщение Nov 30 2006, 11:39
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(Doka @ Nov 30 2006, 10:37) *
Цитата(SM @ Nov 30 2006, 01:45) *
Если C55xx - то он усекает 55-ые 16-битные чары до интеловских, 8-битных, просто отбрасывая старшую часть.

да вот пользуюсь я как раз не чаром:

Код
  typedef short  s16;
...
  s16 a[SIZE];
...
  fwrite(a, sizeof(s16), SIZE, f_out);


или можно переформулировать вопрос так: чем надо пользоваться, чтобы правильно записывать файлы fwrite() ?


Написать свою фунцию записи в файл, больше ничего не поможет.

void my_write(FILE *fp, short in)
{
fwrite(&in, 1, 1, fp);
in>>=8;
fwrite(&in, 1, 1, fp);
}


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 30 2006, 13:37
Сообщение #6


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



alex_os, спасибо. так и пришлось сделать


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 03:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01952 секунд с 7
ELECTRONIX ©2004-2016