nixp.ru v3.0

23 января 2017,
понедельник,
07:40:36 MSK

DevOps с компанией «Флант»
i-zoom написал 26 апреля 2006 года в 17:13 (365 просмотров) Ведет себя неопределенно; открыл 10 тем в форуме, оставил 8 комментариев на сайте.

если делать :

fd = open («/dev/ttyS0» … );

char byte;

read(fd,&byte,1);

Т.е. читает один байт — то всё ОК , читает ОДИН байт .

А если написать

char byte[8];

read(fd,&byte,8);

то не читает . Почему ?

P/S.Разумеется есть select с таймаутами перед чтением.

Feuerbach


char byte;
read(fd,&byte,1);

Здесь вторым аргументом передается указатель на char.

char byte[8];
read(fd,&byte,8);

Здесь вторым аргументом передается указатель на… char[].

Дальше сам додумаешь?

i-zoom
Feuerbach

char byte;
read(fd,&byte,1);

Здесь вторым аргументом передается указатель на char.

char byte[8];
read(fd,&byte,8);

Здесь вторым аргументом передается указатель на… char[].

Дальше сам додумаешь?

торможу ..

у read написано , что второй аргумент, указатель на начало бувера ввода, вот я ему и даю указатель на начало массива …. что не так ?

Feuerbach

Если дан массив

char byte[8];

то указатель на его первый элемент — это не &byte, а &(byte[0]), или просто byte (да-да, просто имя массива).

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.