Сделать прогу которая скопирует структуру в другую но без номера телефона!(исправить ошибку) - C (СИ)
Формулировка задачи:
#include<stdio.h> #include<conio.h> struct Sotrudnik { char name[10]; char famili[10]; char ulicya[10]; long int telefon; }; struct Sotrudnik1 { char name[10]; char famili[10]; char ulicya[10]; }; void main() { int i; struct Sotrudnik st[3]; struct Sotrudnik1 str[3]; st[0].name="Vasya"; _ _ _ <----- [C++ Error] Unit1.c(24): E2277 Lvalue required st[0].famili="kent"; st[0].ulicya="metalistov"; _ _ _ <----- [C++ Error] Unit1.c(24): E2277 Lvalue required st[0].telefon=1345; st[1].name="Vasya"; _ _ _ : st[1].famili="kent"; _ _ _ <----- [C++ Error] Unit1.c(24): E2277 Lvalue required st[1].ulicya="metalistov"; _ _ _ : st[1].telefon=1345; st[2].name="Vasya"; st[2].famili="kent"; st[2].ulicya="metalistov"; st[2].telefon=1345; for(i=0; i<3; i++) { str[i].name=st[i].name; str[i].famili=st[i].famili; str[i].ulicya=st[i].ulicya; } getch(); return 0; }
Решение задачи: «Сделать прогу которая скопирует структуру в другую но без номера телефона!(исправить ошибку)»
#include<stdio.h> #include<conio.h> #include<string.h> struct Sotrudnik { char name[10]; char famili[10]; char ulicya[10]; long int telefon; }; struct Sotrudnik1 { char name[10]; char famili[10]; char ulicya[10]; }; #define ARRAY_SIZE 3 int main(int argc, char *argv[]) { int i; struct Sotrudnik src[ARRAY_SIZE] = { // инициализируем массив данными { "vasia", "petrov", "svetlaya", 123456789 }, { "sidor", "ivanov", "krivaya", 932313435 }, { "ivan", "ivanov", "drugaya", 56564787 } }; struct Sotrudnik1 out[ARRAY_SIZE]; // copy structures for(i=0; i<ARRAY_SIZE; i++) { memcpy(&out[i], &src[i], sizeof(Sotrudnik1)); // копируем структуру просто как буфер данных <-- printf("%s %s %s\n", out[i].name, out[i].famili, out[i].ulicya); } return 0; }
Объяснение кода листинга программы
В этом коде определен массив структур Sotrudnik и Sotrudnik1. Структура Sotrudnik содержит поля name, famili и ulicya типа char и поле telefon типа long int. Структура Sotrudnik1 содержит поля name, famili и ulicya типа char. В массиве src инициализированы структуры Sotrudnik с некоторыми значениями. В массиве out создаются структуры Sotrudnik1, в которые будут копироваться данные из структур src. Затем выполняется цикл for, который проходит по всем элементам массива src. Для каждого элемента массива src выполняется операция memcpy, которая копирует данные из этого элемента массива src в соответствующий элемент массива out. При этом копируются только данные типа Sotrudnik1, то есть без учета поля telefon. После завершения цикла выводится содержимое всех структур Sotrudnik1. В конце программы возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д