Я создал программу, которая будет принимать два массива и помещать их в функцию, которая будет сравнивать элементы обоих массивов, и создавать новый массив, содержащий все уникальные элементы из первых 2. Мой код компилируется безошибки, и когда я запускаю код, я получаю правильный вывод, однако я получаю кучу дополнительных случайных чисел по всему размеру после.Я не уверен, является ли это какой-то ошибкой сегментации или чем-то еще.Но я не уверен, с чем связана эта проблема и где искать решение.
#include <stdio.h>
void find_elements(int *a, int n1, int *b, int n2, int *c, int *size);
int main(){
int n1, n2;
int a[n1];
int b[n2];
int i;
int size=0;
printf("Enter the length of the first array: ");
scanf("%d", &n1);
printf("Enter the elements of the first array: ");
for(i=0; i<n1; i++)
scanf("%d", &a[i]);
printf("Enter the length of the second array: ");
scanf("%d", &n2);
printf("enter the elements of the second array: ");
for(i=0; i<n2; i++)
scanf("%d", &b[i]);
size = n1+n2;
int c[size];
find_elements(a, n1, b, n2, c, &size);
printf("Output: ");
for(i=0; i<(size); i++)
printf("%d ", c[i]);
return 0;
}
void find_elements(int *a, int n1, int *b, int n2, int *c, int *size){
int *p;
int *p1;
int i, j;
int count;
p=a;
for(i=0; i<n1; i++){
p1 = b;
for(j=0; j<n2; j++){
if(*p==*p1){
break;}
p1++;
}
if(j==n2){
*c=*p;
c++;
count++;
}
p++;
}
p=b;
for(i=0; i<n2; i++){
p1 = a;
for(j=0; j<n1; j++){
if(*p==*p1){
break;}
p1++;
}
if(j==n1){
*c=*p;
c++;
count++;
}
p++;
*size = count;
}}
Пример ввода / вывода для моего кода:
Введите длину первого массива: 5
Введите элементы массива: 9 8 5 6 4
Введите длину второго массива: 4
Введите элементы массива: 6 9 7 1
Вывод: 8 5 4 7 1
Iполучить этот вывод, но в дополнение я получаю это:
Выход: 8 5 4 7 1 0 -1 0 0 0 740434312 60 0 0 4196006 0 6 7 9 1 9 8 5 6 4 0 4196528 65 4 5-1 -1 1000611008 32764 -1 -1 1000610992 32764 8 0 1000610928 32764 4195408 43 0 0 4195408 0 0 0 746712