Исправить ошибки в коде - C (СИ) (75818)
Формулировка задачи:
#include <stdio.h>
#include <malloc.h>
#define DEVICE_NAME_LEN 30
#define CUSTOMER_NAME_LEN 40
#define N 2
// Структура для габаритов
struct Dimensions {
float Length, Height, Width;
};
// Структура для прибора
struct MeasureDevice {
char
deviceName[DEVICE_NAME_LEN];
struct Dimensions
deviceDimensions;
float
devicePrice;
};
// Структура для заказчика
struct Customer {
char
customerName[CUSTOMER_NAME_LEN];
char
address[50];
};
// Структура для заказа
struct Order {
char
customerName[CUSTOMER_NAME_LEN];
char
deviceName[DEVICE_NAME_LEN];
long int
amount;
};
//основная функция программы
int main() {
struct MeasureDevice
devices[N];
for(int i=0; i<N; i++)
{
scanf("%s", &devices[i].deviceName);
scanf("%f %f %f", &devices[i].deviceDimensions.Length, &devices[i].deviceDimensions.Height,
&devices[i].deviceDimensions.Width);
scanf("%f", &devices[i].devicePrice);
}
FILE* outFile;
if ( ( outFile = fopen("devices.dat", "wb") ) == NULL ) {
printf("Unable to open file\n");
return 1;
}
fwrite(&devices, sizeof(MeasureDevice), N, outFile);
fclose(outFile);
return 0;
}Решение задачи: «Исправить ошибки в коде»
textual
Листинг программы
scanf("%s", &devices[i].deviceName);
Объяснение кода листинга программы
- В данном коде используется функция scanf для ввода данных в программу.
- Функция scanf ожидает ввода строки, которую она сохраняет в переменной devices[i].deviceName.
- Переменная i представляет собой индекс в массиве, который увеличивается на 1 после каждого использования scanf.
- scanf требует указателя на переменную, в которую нужно ввести данные. В данном случае используется оператор & для передачи адреса переменной devices[i].deviceName в функцию scanf.
- После использования scanf, программа продолжает выполняться, и введенные данные сохраняются в массиве devices для дальнейшего использования.