Считывание из структуры файла выдает неправильное значение - C (СИ)
Формулировка задачи:
Всем привет.Такая проблема.У меня задача считать и вывести значение из файла(бинарного) с известной структурой значения полей.Описал первый пакет,вывожу в консоль и для заголовка,значение которого по описанию:0xFACE получаю значение:6356468,что в шестнадцатиричной=60FDF4.При сборке получаю предупреждение-: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'short unsigned int.Код прилагаю.В чем может быть проблема?Спасибо.
#includestruct pole0 { unsigned short int a1; short int a2; long int a3; long int a4[16]; float a5; float a6; float a7; float a8; float a9; float a10; float a11; float a12; float a13; float a14; float a15; float a16; float a17; float a18; float a19; float a20; float a21; float a22; long int a23; float a24; float a25; float a26; float a27; float a28; float a29; float a30; float a31; unsigned short int a32; }; int main() { struct pole0 a; FILE *f=fopen("E:/qt/projects/ispytaenie/20110601_31N016_An2_Chernoe.cn3","rb"); fread(&a,sizeof(a),1,f); printf ("%uh",&a.a1); return 0; }
Решение задачи: «Считывание из структуры файла выдает неправильное значение»
textual
Листинг программы
unsigned char buf[sizeof(a)]; fread(&buf, 1, sizeof(buf), f); for(int i = 0; i < sizeof(a); i++) printf("%x", buf[i]);
Объяснение кода листинга программы
- В этом коде используется массив типа unsigned char с именем buf, который имеет размер, достаточный для хранения структуры a.
- Функция fread используется для чтения данных из файла в массив buf. В качестве аргументов функции передаются адрес массива buf, размер одного элемента (в данном случае 1), и размер массива buf (который должен быть равен размеру структуры a).
- Затем происходит проход по всем элементам массива buf с помощью цикла for.
- Внутри цикла каждый элемент массива buf выводится на экран с помощью функции printf. Формат вывода задается как
%x
, что означаетвывести шестнадцатеричное значение
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д