我想讀一個數字作爲int數組,但會發生一些奇怪的事情。Realloc循環失敗
#include <stdlib.h>
#include <stdio.h>
int getNumber(int ** dst)
{
int size = 0;
int num = 0;
scanf("%c", &num);
while(num != 10)
{
if((num < 48) || (num > 57))
{
printf("This is not a number.\r\n");
return -1;
}
size++;
*dst = (int *) realloc(*dst, sizeof(int) * size);
*dst[ size - 1 ] = (num - 48);
scanf("%c", &num);
}
return size;
}
int main()
{
int * number = NULL;
int size = 0;
size = getNumber(&number);
return 0;
}
第一迭代通常通過,但在第二次迭代*dst[ size - 1 ] = (num - 48);
失敗。 有什麼不對?
「失敗」意味着什麼?崩潰,產生錯誤的輸出,在屏幕上畫一隻鴨子? –
@MatsPetersson它引發「訪問衝突」。我修復了它。 – KKastaneda
是的,我的觀點是你應該描述實際發生的情況,而不僅僅是「不起作用」。 –