Выделение памяти под динамический массив выдает ошибку - 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; }
Объяснение кода листинга программы
- Создается массив указателей на строки (
char *strgs[MaxStr]
). - В цикле
while
считываются строки из файлаin
в буферbuf
размеромBSIZE - 1
. - Для каждой считанной строки выделяется память под новую строку с помощью
malloc(strlen(buf) +1)
. - Новая строка копируется в выделенную память с помощью
strcpy(strgs[i], buf)
. - Увеличивается индекс для следующей строки.
- После завершения цикла все выделенные строки должны быть освобождены с помощью
free()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д