填充数组为空-中止陷阱:6

时间:2019-02-18 18:54:08

标签: c arrays abort

我有一个长数组,我试图弄清楚如何将其拆分为两个单独的数组,第二个数组的内容正确,但第一个为空,我也遇到了Abort Trap: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 :(得分:0)

您发布的代码没有错。

执行后,变量具有以下值:

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个字符,看看是否会改变结果。

相关问题