C, выделяющий массив символов, вызывающий недопустимый доступ во время выполнения исключения - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблемы с распределением памяти для моего массива. Метод возвращается, как и ожидалось, но исключение во время выполнения убивает программу.

Я получил это исключение при использовании моего отладчика.

EXC_BAD_ACCESS (code=1, address=0x0)

Это метод, вызывающий проблему:

char *progScanner(char *line){

    char originalLine[100];
    strcpy(originalLine, line);
    char *correctLine[100];
    char *segment;
    int i = 0;

    segment = strtok(originalLine," ,()");
    while (segment != NULL){
        printf (" %s",segment);
        correctLine[i++] = segment;
        segment = strtok (NULL, " ,()");
    }

    char *newLine;
    newLine = malloc(100 * sizeof(char));
    int j = 1;
    strcpy (newLine, correctLine[0]);
    while(j<=i){
        strcat(newLine, correctLine[j]);
        j++;
    }

    return newLine;
}

1 Ответ

0 голосов
/ 14 ноября 2018

Вы получаете доступ вне массива correctLine, когда получаете j == i, потому что последний действительный индекс в correctLine равен j-1. Изменить

while(j<=i){

до

while(j<i){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...