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

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

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

В переменной "a" хочу хранить ссылки на адреса памяти значений val. Но выдает ошибки.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. typedef struct _Key
  6. {
  7. char key;
  8. int *a;
  9. } Key;
  10. typedef struct _Val
  11. {
  12. char val[81];
  13. } Val;
  14. int main(void)
  15. {
  16. const int N = 50;
  17. int i, cnt, action;
  18. char ch;
  19. Key keys[N];
  20. Val values[N];
  21. Key key;
  22. FILE *file = fopen("input2.txt", "r");
  23. if (file == NULL)
  24. {
  25. printf("Ошибка при открытии файла\n");
  26. return 0;
  27. }
  28. i = 0;
  29. while (i < N && fscanf(file, "%s", &keys[i].key) == 1)
  30. {
  31. fscanf(file, "%c", &ch);
  32. getRow(file, values[i].val, sizeof(values[i].val));
  33. keys[i].a=&values[i].val;
  34. i++;
  35. }
  36. fclose(file);
  37. cnt = i;
  38. }
ошибка
Листинг программы
  1. warning: assignment from incompatible pointer type [enabled by default]
  2. keys[i].a=&(values[i].val);
  3. ^

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

textual
Листинг программы
  1. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут