使用C中的函数和指针将n个数组合并为一个

问题描述 投票:-1回答:1

我已经尝试过使用函数和数组,但是为了使用指针进行操作失败了。我想在指针而不是数组的帮助下做到这一点,但我遇到了使用指针传递和调用数组值的问题。下面是代码。

#include <stdio.h>

void final_array(int arr[], int size);
void array(int arr[], int i, int size);

int main()
{
int num, size[100];
int i, j;
int arr[100][100];

printf("Enter the number of arrays: \t");
scanf("%d", &num);
num = num < 100 ? num: 100;

//feeding elements.

for (i = 0; i<num; i++)
{
    printf("\nEnter the size of the array: \t");
    scanf("%d", &size[i]);

    printf("\nEnter the array: ");

    size[i] = size[i] < 100 ? size[i] : 100;
    array(&arr[i][0], i, size[i]);
}

for(i=0; i<num; i++)
{
    final_array(&arr[i][0], size[i]);
    printf("\n");
}

printf("\nPress Enter key to exit.\n");
getchar();

 return 0;
}

void array(int arr[], int i, int size)
{
    int j;
for (j = 0; j<size; j++)
{
    printf("\nEnter arr[%d][%d]: \t",i, j);
    scanf("%d", &arr[j]);
}
}

void final_array(int arr[], int size)
{
    int j;
    for(j=0; j<size; j++)
    {
        printf("%d\t", arr[j]);
    }
}
c arrays pointers multidimensional-array
1个回答
0
投票

我想这应该可以解决你的问题。让我知道它是否正确。

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

void final_array(int *arr, int size);
void array(int *arr, int i, int size);

int main()
{
int num;

int i, j;
int **arr=(int **)malloc(100 * sizeof(int *));
for (i=0; i<100; i++)
        arr[i] = (int *)malloc(100 * sizeof(int));

printf("Enter the number of arrays: \t");
scanf("%d", &num);
int *size=malloc(sizeof(int)*num);
num = num < 100 ? num: 100;

//feeding elements.

for (i = 0; i<num; i++)
{
    printf("\nEnter the size of the array: \t");
    scanf("%d", &size[i]);

    printf("\nEnter the array: ");

    size[i] = size[i] < 100 ? size[i] : 100;
    array(&arr[i][0], i, size[i]);
}

for(i=0; i<num; i++)
{
    final_array(&arr[i][0], size[i]);
    printf("\n");
}

printf("\nPress Enter key to exit.\n");
getchar();

 return 0;
}

void array(int *arr, int i, int size)
{
    int j;
    for (j = 0; j<size; j++)
    {
        printf("\nEnter arr[%d][%d]: \t",i, j);
        scanf("%d", &arr[j]);

    }
}

void final_array(int *arr, int size)
{
    int j;
    for(j=0; j<size; j++)
    {
        printf("%d\t", arr[j]);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.