Выделение памяти под динамический массив выдает ошибку - 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().