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 инициализируется нулем.
Код можно оформить в виде списка следующим образом:
- Тип данных: указатель на структуру
- Переменная: keys
- Переменная: values
- Переменная: i
- Переменная: a
- Присваивание: keys[i].a = values[i].val
- Условие: i < num_elements
- Увеличение: i++