Считывание структуры. Как сделать для "Price" числовой тип? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Помогите разобраться со считыванием структуры из файла.
struct Price
    {
        char item[20];
        char shop[20];
        float price;
    } goods[n], tmp;
    i = 0;
    FILE *file;
    file = fopen("c:\\Price.txt","r");
    while(!(feof(file)))
        {
            fscanf(file, "%s %s %f", goods[i].item, goods[i].shop, goods[i].price);
            i++;
        }
Когда у "Price" стоит тип FLOAT, программа не запускается и выдает ошибку в файле "input.c":
 _FASSIGN( longone-1, (char*)pointer , pFloatStr, (char)decimal, _loc_update.GetLocaleT());
Если INT:
if (longone)
                                    *(long UNALIGNED *)pointer = (unsigned long)number;
Сам файл:
Abrikos AMSTORE 30
Banan METRO 20
Kolbasa BOOM 100
Ogurec ASSORTI 5
asd das 34
asd dsa 234
fds sdf 234
Если у "Price" тип CHAR, как и у остальных категорий структуры, все работает нормально. Как сделать для "Price" числовой тип? Спасибо.

Решение задачи: «Считывание структуры. Как сделать для "Price" числовой тип?»

textual
Листинг программы
int d1;
int *d2;
 
// где-то здесь выделили память для d2
fscanf(file, "%d %d", &d1, d2);
// d1 - передаётся с помощью опереации получения адреса
// d2 - является адресом и передатся без каких либо операций

Объяснение кода листинга программы

  1. В начале кода объявлены две переменные: d1 и d2. Переменная d1 имеет тип int, а переменная d2 - указатель на int.
  2. Предполагается, что где-то до этого кода была выполнена операция выделения памяти для переменной d2.
  3. С помощью функции fscanf происходит попытка чтения двух целочисленных значений из файла file.
  4. В качестве формата передачи данных указывается %d %d, что означает, что ожидаются два целочисленных значения.
  5. Адрес переменной d1 передается с помощью операции получения адреса &, а переменная d2 передается без каких-либо операций, так как она уже является адресом.
  6. Если все идет по плану, то в d1 будет храниться первое прочитанное значение, а в d2 - адрес памяти, где будет храниться второе значение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы