我有一个长数组,我试图弄清楚如何将其拆分为两个单独的数组,第二个数组的内容正确,但第一个为空,我也遇到了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);
答案 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个字符,看看是否会改变结果。