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