2013-04-22 2 views
-5

Может ли кто-нибудь помочь мне распечатать следующие данные в C, спецификаторе точного формата и процедуре для печати.Спецификатор формата для печати следующих данных в C

  union 
      { 
          char  c[8]; 
          short  s[4]; 
          long  l[2]; 
          void * vfp[2]; 
      } info; 

Когда я пытаюсь использовать printf ("% s \ n", info.c); и printf ("% s \ n", info.s). У меня есть некоторые значения для мусора. Также мне нужна помощь в печати этих указателей. Спасибо за поддержку.

+0

Ваша проблема в использовании союза. Вместо этого вы должны использовать 'struct', если вы намереваетесь, чтобы более одного из них были активны одновременно. – 2013-04-22 15:03:54

+0

Каков желаемый результат? У вас есть 4 разных представления одних и тех же данных. Если это какой-то вариант, должен быть индикатор того, какой элемент действителен. –

ответ

4

Вам необходимо понять, что семантика использования union. Вы можете только прочитать тип, который вы сохранили в конкретном экземпляре объекта объединения. И вы можете хранить только один тип в объединении по определенному экземпляру во времени.
Так что либо вы сохранили s, либо c, это не может быть и то, и другое. Если вы намерены хранить оба типа, то вам нужна структура, а не объединение.

1

Прежде всего, вы - using a union. в памяти общий между этими 4 массивами. Я не уверен, что ты этого хочешь.

Во-вторых, список format specifiers is here. %s - для строк. %p предназначен для указателей, а %ld может использоваться для долгого подписания.