Я читаю из файла (каждая строка содержит 1 слово) и помещает каждую строку в массив. Однако я получаю ошибку сегментации всякий раз, когда пытаюсь получить доступ к любому элементу массива. Любая помощь по этому поводу очень ценится. * обновление: добавлен время цикла, чтобы захватить персонажа один за другим, но я все еще получаю ошибку сегментацииОшибка доступа к данным из массива
Указатель был сделан здесь:
char* ptr;
Я передал его через функцию, как это:
fillDict(ptr,&size);
int fillDict(char* ptr,int *size)
и он читает файл и помещает его в массив здесь:
int i = -1;
int numb;
int wsize;
while (fgets(word,30,file)!=NULL)
{
if (i==-1)
{
if(word[strlen(word)-1]=='\n')
{
word[strlen(word)-1] = 0;
}
numb = atoi(word);
ptr = malloc(sizeof(char));
}
else
{
if(word[strlen(word)-1]=='\n')
{
word[strlen(word)-1] = 0;
}
wsize = wsize+strlen(word);
ptr = realloc(ptr,wsize);
int j = 0; //added from here
while(j<strlen(word)-1)
{
printf("%d\n",j);
ptr[j] = word[j]; //crashes here
j++;
}
ptr[j] = '\0'; //to here
size++;
}
i++;
}
printf("%s",ptr[0]); //but fails here
fclose(file);
'ptr [i] = word;' вы создаете 1 мерный массив и пытаетесь рассматривать его как 2-мерный. – Jagannath
Да, и похоже, что память, которую указывает слово 'word', уже недействительна, поскольку она выходит за рамки вне цикла while. – texasflood