Pulling values out of one multidimensional array and putting them into several 1D arrays (C)

typescript
Ethan JacksonI am trying to sort the values in the Data array into Column arrays X1,X2, and Y_actual. The code I have written out makes sense to me, and returns the correct array1,array2, and array3 values if I print them within the Data_Sort function, but the X1, X2, and Y_actual arrays are incorrect. For reference X1 = {0,1,2,3} which is correct but X2 = {1,2,3,6} and Y_actual = {2,3,6,12}. I want it to sort like this X1 = {0,1,2,3} and X2 = {0,2,4,6} etc
int Data[4][3] = {{0,0,0},{1,2,4},{2,4,8},{3,6,12}};
int X1[] = {};int X2[] = {};int Y_actual[] = {};
int Data_Sort (int *array1, int *array2, int *array3){
for(int i = 0; i<4; i++){
array1[i] = Data[i][0];
array2[i] = Data[i][1];
array3[i] = Data[i][2];}
int main()
{
Data_Sort(X1, X2, Y_actual);
return 0;
}
Answer
You need to allocate space for the arrays with a fixed size, like this:
int Data[4][3] = {{0,0,0},{1,2,4},{2,4,8},{3,6,12}};
int Data_Sort (int *array1, int *array2, int *array3){
for(int i = 0; i<4; i++){
array1[i] = Data[i][0];
array2[i] = Data[i][1];
array3[i] = Data[i][2];
}
return 0;
}
int main() {
int X1[4], X2[4], Y_actual[4];
Data_Sort(X1, X2, Y_actual);
// Optional: Print to verify
for (int i = 0; i < 4; i++) {
printf("X1[%d] = %d, X2[%d] = %d, Y_actual[%d] = %d\n", i, X1[i], i, X2[i], i, Y_actual[i]);
}
return 0;
}