У меня есть следующий код C:Создание в C динамического 3D массива
char buffer[255];
char ***data = NULL;
int i = 0;
int size = 10;
**data = (char*) calloc(size, sizeof(char**));
while(fgets(buffer, 255, database)) {
if(i + 1 >= size) {
size += 10;
**data = (char*) realloc(**data, size*sizeof(char**));
}
char **line = str_split(buffer, ',', 6);
**data[i++] = **line;
}
Я нуб в C. И я не понимаю rearly моего кода. Но мне нужен массив 3D-символов (в Java я скажу массив 2D String). Первые [] - это строки из моего текстового файла с «fgets» из «базы данных» (и я не знаю, сколько строк, вот почему я хочу, чтобы он был динамическим). Второй [] и thirt [] заполнены значениями из str_split.
str_split работает отлично, вот код:
char** str_split(char* str, const char a_delim, int count) {
char **result;
char *token;
char *rest = str;
char delim[] = { a_delim, '\0' };
result = (char**) malloc(sizeof(char*) * count);
int i = 0;
while((token = strtok_s(rest, delim, &rest))) {
*(result + i++) = token;
}
return result;
}
Так что проблема во время выполнения я получаю следующее сообщение об ошибке:
Access violation writing location 0x00000000.
Что не так?
1) '** data = (char *) calloc (size, sizeof (char **));' -> 'data = (char ***) calloc (size, sizeof (char **)) ; ' – BLUEPIXY
« Я не совсем понимаю мой код »: Тогда как вы его написали? И где эта ошибка? –
* «Я почти не понимаю мой код» * Ну, это расстраивает. Как вы можете ожидать, что другие поймут это? –