Assignment from incompatible pointer type - C (СИ) (69493)

Узнай цену своей работы

Формулировка задачи:

В переменной "a" хочу хранить ссылки на адреса памяти значений val. Но выдает ошибки.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
typedef struct _Key
{
    char key;
    int *a;
} Key;
 
typedef struct _Val
{
    char val[81];
} Val;
 
int main(void)
{
    const int N = 50;
    int i, cnt, action;
    char ch;
    Key keys[N];
    Val values[N];
    Key key;
    FILE *file = fopen("input2.txt", "r");
 
    if (file == NULL)
    {
        printf("Ошибка при открытии файла\n");
 
        return 0;
    }
 
    i = 0;
 
    while (i < N && fscanf(file, "%s", &keys[i].key) == 1)
    {
        fscanf(file, "%c", &ch);
        getRow(file, values[i].val, sizeof(values[i].val));
        keys[i].a=&values[i].val;           
        i++;
    }
 
    fclose(file);
 
    cnt = i;
}
ошибка
warning: assignment from incompatible pointer type [enabled by default]
   keys[i].a=&(values[i].val);  
            ^

Решение задачи: «Assignment from incompatible pointer type»

textual
Листинг программы
keys[i].a=values[i].val;

Объяснение кода листинга программы

В данном коде происходит присваивание значения переменной val из массива values переменной a из массива keys. Номер элемента массива i инициализируется нулем. Код можно оформить в виде списка следующим образом:

  1. Тип данных: указатель на структуру
  2. Переменная: keys
  3. Переменная: values
  4. Переменная: i
  5. Переменная: a
  6. Присваивание: keys[i].a = values[i].val
  7. Условие: i < num_elements
  8. Увеличение: i++

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5