Заполненный массив пуст - ловушка отмены: 6 - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть один длинный массив, и я пытаюсь выяснить, как разделить его на два отдельных массива, второй массив имеет правильное содержимое, но первый пустой, я также получаю прерывание прерывания: 6и я не уверен, что это значит.

У меня есть массив wholeA, который выглядит примерно так:

HELLO: WORLD, я хочу поместить HELLO в отдельный массив (firstA) и WORLD в secondA.Когда я печатаю первый и второй массив в конце, secondA имеет правильное содержимое, но firstA не генерирует событие, хотя я печатаю, чтобы проверить, передаются ли правильные символы, и они есть - но firstA все еще пуст, и яя получаю и отменяю ловушку, которую я не понимаю.

Я только начал изучать C, почему первый массив пуст и что означает ошибка?

#define ARRSIZE 10000

char entireA[ARRSIZE] = "";
char firstA[ARRSIZE]  = "";
char secondA[ARRSIZE] = "";

strcpy(entireA,"HELLO:WORLD\n");

    int firstVar = 0;
    int entireVar = 0;
    while(entireA[entireVar] !=  ':') {
        if(entireA[entireVar] == ';') {
            break;
        }
        printf("%c \n",entireA[entireVar]);
            firstA[firstVar] = entireA[entireVar];
            firstVar++;
            entireVar++;
    }
    firstA[firstVar] = '\0';

    int secondVar = 0;
    entireVar++; //skip ':'
    while(entireA[entireVar] !=  '\n') {
            secondA[secondVar] = entireA[entireVar];
            secondVar++;
            entireVar++;
    }
    secondA[secondVar] = '\0';

printf("%s", firstA);
printf("%s", secondA);

1 Ответ

0 голосов
/ 18 февраля 2019

В написанном вами коде нет ничего плохого.

После выполнения переменные имеют следующие значения:

entireA 0x02efcdb4 "HELLO:WORLD\n"  char[0x00002710]
entireVar   0x0000000b  int
firstA  0x02efa69c "HELLO"  char[0x00002710]
firstVar    0x00000005  int
secondA 0x02ef7f84 "WORLD"  char[0x00002710]
secondVar   0x00000005  int

Какова бы ни была ваша проблема, скорее всего, это как-то связано сваше окружение.Я бы предложил уменьшить значение ARRSIZE, скажем, до 80 символов, и посмотреть, изменит ли это ваши результаты.

...