打印动态数组时输出错误

时间:2015-12-26 17:24:17

标签: c

我正在尝试从用户输入数组长度,输出数字..

当n = 3时,我只得到“1”,“1”,“1”作为输出,而num的值是整数。

int main()
{
    int *arr1, n,num = 0,*p;
    printf("Please enter the size of the array: ");
    scanf("%d", &n);
    arr1 = (int*)malloc(n * sizeof(int));
    if (arr1 == NULL)
        printf("Not enough memory\n");
    else  printf("Array was allocated!\n" );
    for (p = arr1; p < arr1 + n; p++)
    {
        *p = scanf("%d", &num);
        printf("%d ", *p);
    }

    free(arr1);
    getch();
}

1 个答案:

答案 0 :(得分:4)

scanf返回匹配数num包含输入的整数 来自man scanf

  

返回值

     

这些函数返回成功匹配的输入项数   并指定[...]

替换

*p = scanf("%d", &num);

scanf("%d", &num);
*p = num;

或简单地 1

scanf("%d", p);

使其正常工作。

1 感谢@JoachimPileborg!