Ошибка "cannot convert 'struct1 *' to 'struct1 *' (передача указателя на массив структур в функцию) - C (СИ)
Формулировка задачи:
Добрый вечер!
Уважаемые специалисты, помогите, пожалуйста, исправить ошибку.
Код следующий:
Борланд ругается на строку № 28
Сообщение об ошибке: "cannot convert ' stud *' to ' stud *'
Все что нашла об этой ошибке:
т.е. переменной типа struct stud* присваивается значение типа struct stud*, но они же вроде одинаковые...
Не судите строго, я только учусь...
Листинг программы
- #include "stdio.h"
- #include "conio.h"
- #define sz 4
- #define szsn 200
- #define szfn 100
- #define szpn 100
- #define f 15
- struct fulln {char sn[szsn]; char fir[szfn]; char pn[szpn]; };
- struct date {int num; int mon; int year; };
- struct stud {struct fulln fio; struct date ent; struct date exc; };
- void printstr(struct stud *p, int n, int x, int y);
- void main()
- {
- clrscr();
- struct stud list[sz]=
- { {{"Petrov", "Petr", "Ivanovich"}, {25,12,1980}, {0,0,0}},
- {{"Sidorov", "Ivan", "Nikolaevich"}, {1,1,2000}, {12,1,2001}},
- {{"Chukhyrmukhyrr", "Georgiy", "Alexandrovich"}, {1,9,2010}, {1,7,2014}} };
- struct stud *C;
- C=&list[0];
- printstr(C, 3, 2, 17);
- getch();
- }
- void printstr(struct stud *p, int n, int x, int y)
- {
- int i, j;
- for(i=0; i<n; i++)
- {
- gotoxy(x,y+i);
- cprintf("%s", (p+i)->fio.sn);
- gotoxy(x+f+1,y+i);
- cprintf("%s", (p+i)->fio.fir);
- gotoxy(x+f*2+1,y+i);
- cprintf("%s", (p+i)->fio.pn);
- }
- }
Листинг программы
- printstr(C, 3, 2, 17);
Cannot convert тип_1 to тип_2
Сообщение об ошибке этапа компиляции (невозможно преобразовать тип_1 в тип_2)
Присваивание, инициализация или выражение требует выполнение заданного преобразования типа, но данное преобразование недопустимо.
Решение задачи: «Ошибка "cannot convert 'struct1 *' to 'struct1 *' (передача указателя на массив структур в функцию)»
textual
Листинг программы
- #include "stdio.h"
- #include "conio.h"
- #define sz 4
- #define szsn 200
- #define szfn 100
- #define szpn 100
- #define f 15
- struct fulln {char sn[szsn]; char fir[szfn]; char pn[szpn]; };
- struct date {int num; int mon; int year; };
- struct stud {struct fulln fio; struct date ent; struct date exc; };
- void printstr(struct stud *p, int n, int x, int y);
- void main()
- {
- clrscr();
- struct stud list[sz]=
- {
- {{"Petrov", "Petr", "Ivanovich"}, {25,12,1980}, {0,0,0}},
- {{"Sidorov", "Ivan", "Nikolaevich"}, {1,1,2000}, {12,1,2001}},
- {{"Chukhyrmukhyrr", "Georgiy", "Alexandrovich"}, {1,9,2010}, {1,7,2014}}
- };
- struct stud *C;
- C=&list[0];
- printstr(C, 3, 2, 17);
- getch();
- }
- void printstr(struct stud *p, int n, int x, int y)
- {
- int i, j;
- for(i=0; i<n; i++)
- {
- gotoxy(x,y+i);
- cprintf("%s", (p+i)->fio.sn);
- gotoxy(x+f+1,y+i);
- cprintf("%s", (p+i)->fio.fir);
- gotoxy(x+f*2+1,y+i);
- cprintf("%s", (p+i)->fio.pn);
- }
- }
Объяснение кода листинга программы
- Включаются заголовочные файлы
stdio.h
иconio.h
. - Определяются константы:
- sz (4);
- szsn (200);
- szfn (100);
- szpn (100);
- f (15).
- Определяется структура
fulln
с полями:- char sn[szsn];
- char fir[szfn];
- char pn[szpn].
- Определяется структура
date
с полями:- int num;
- int mon;
- int year.
- Определяется структура
stud
с полями:- struct fulln fio;
- struct date ent;
- struct date exc.
- Определяется функция printstr.
- В функции main() создается массив структур
stud
list размером sz (в данном случае 4). - Инициализируются первые три элемента массива.
- Создается указатель C на первый элемент массива list.
- Вызывается функция printstr(), передавая в нее указатель C, размер массива (3), координаты вывода (2,17) и значения переменных n, x, y, которые используются в функции printstr().
- В функции printstr() используется цикл for для перебора элементов массива p, начиная с индекса 0 и до n-1.
- Внутри цикла выводятся значения полей структур
fulln
на экран с помощью функции cprintf(). - Координаты вывода задаются с помощью функции gotoxy().
- Значения переменных x, y используются для задания координат вывода.
- Значение переменной f используется для задания смещения между полями структур
fulln
. - Значение переменной i используется для задания номера текущего элемента массива.
- В конце функции main() вызывается функция getch().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д