Ошибка "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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д