用于混合数组的程序中的未处理异常

时间:2014-12-18 20:49:31

标签: c

我的程序遇到了一些问题,没有任何编译错误。我在ALINUR_CAGLAYAN_LAB6.exe中的0x00d114d6处获得“未处理的异常:0xC0000005:访问冲突读取位置0x00000006。”输入数组元素后出错。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(void)

{
float *newArray, *blendingArray;
int a, x, blendingLength;

printf("length: ");
scanf("%d", &blendingLength);

blendingArray = (float*)malloc(blendingLength*sizeof(float));
newArray = (float*)malloc(blendingLength*sizeof(float));

for(a=0; a<blendingLength; a++)
{
printf("%d. element", a+1);
scanf("%d", &blendingArray);
}

for(a=0; a < blendingLength; a++)
{
    if (a % 2 == 0)
    {
        newArray[a]=blendingArray[a];
    }
    else if (a % 2 == 1)
    {
        newArray[a]=blendingArray[blendingLength - a];
    }
}
for (a=0; a < blendingLength; a++)
{
printf("%d. element of new array: %d\n", a+1, newArray[a]);
}
return *newArray;
}

1 个答案:

答案 0 :(得分:1)

您正在重复地将整数值读入blendingArray指针。除了尝试输入小数部分失败之外,这会使指针处于无用状态(指向0x00000006,例如,如果您输入&#34; 6&#34;作为最后一个元素)。

您希望将浮点值读入blendingArray元素

scanf("%f", &blendingArray[a]);