Incompatible types char and char* - C (СИ)
Формулировка задачи:
Привет. В процессе ознакомления с языком Си и в частности со
Ошибка возникает в следующем коде:
Пытался использовать указатель и функцию malloc
В итоге компилятор об ошибке больше не сообщает но сама программа во время выполнения вылетает в appcrash;
-Заранее извиняюсь если вопрос глупый.
структурами
, на моем пути встретилась такая ошибка.
incompatible types char and char*
struct st
{
int i;
char ch[255];
};
int main(void)
{
struct st arr[2];
arr[0].ch="Ivanov";struct st
{
int i;
char *ch;
};
int main(void)
{
struct st arr[2];
arr[0].ch=(char*) malloc(7);
arr[0].ch="Ivanov";Решение задачи: «Incompatible types char and char*»
textual
Листинг программы
struct st
{
long int i;
char ch[];
};
int main(void)
{
setlocale (LC_ALL, "");
struct st arr[2];
strcpy(arr[0].ch, "Ю.Гагарин");
arr[0].i=1961;
strcpy(arr[1].ch, "Г.Титов");
arr[1].i=1961;
strcpy(arr[2].ch, "Д.Гленн");
arr[2].i=1962;
int i;
for(i=0; i<3; i++)
{
if(arr[i].i>1961)
{
printf("%s\n",arr[i].ch);
printf("%i\n",arr[i].i);
}
}
return (0);
}
Объяснение кода листинга программы
- В начале кода объявляется структура
st, которая содержит два поля:iтипаlong intиchтипаchar[]. - В функции
mainсоздается массив структурarrразмером 2, который заполняется данными о космонавтах. - В цикле
forпроисходит проверка значения поляiкаждой структуры массиваarr. Если значение больше 1961, то выводятся значения полейchиiэтой структуры. - В конце функции
mainвозвращается значение 0, что означает успешное завершение работы программы.