Выделение памяти под динамический массив выдает ошибку - C (СИ)

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

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

В общем проблема такова, при компиляции вылазит ошибка: 27 C:\Users\USER\Desktop\projects\main.c invalid conversion from `void*' to `char*'
char *strgs[MaxStr];
...
...
 
while( fgets(buf, BSIZE - 1, in) != NULL){
           strgs[i] = malloc(strlen(buf) +1); // строка выдающая ошибку
           strcpy(strgs[i], buf);
           ++i;
           }
в чем проблема разобраться не могу, просьба помочь.

Решение задачи: «Выделение памяти под динамический массив выдает ошибку»

textual
Листинг программы
char *strgs[MaxStr];
...
...
 
while( fgets(buf, BSIZE - 1, in) != NULL){
           strgs[i] = (char*) malloc(strlen(buf) +1); // строка выдающая ошибку
           strcpy(strgs[i], buf);
           ++i;
           }

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

  1. Создается массив указателей на строки (char *strgs[MaxStr]).
  2. В цикле while считываются строки из файла in в буфер buf размером BSIZE - 1.
  3. Для каждой считанной строки выделяется память под новую строку с помощью malloc(strlen(buf) +1).
  4. Новая строка копируется в выделенную память с помощью strcpy(strgs[i], buf).
  5. Увеличивается индекс для следующей строки.
  6. После завершения цикла все выделенные строки должны быть освобождены с помощью free().

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


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

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

9   голосов , оценка 4.222 из 5
Похожие ответы