Функция для нарезки массива или структуры в c - PullRequest
0 голосов
/ 14 апреля 2019

Я написал функцию для нарезки массива в c, но он возвращает адреса, я думаю. Я работал правильно один раз, но я где-то облажался, любая помощь будет оценена.

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

int slice_array(int *input_array, int *sliced_array, int n){
    int i;
    for(i=0; i < n; i++) {
            sliced_array[i] = input_array[i];
    return 0;
    }
};

struct nbrs_ind {
    float value;
    int index;
};

//I also want to write a function which can slice the members of struct nbrs_ind (i.e. just slice first n indices nbrs_ind)

int main () {
    int k=4;
    int i;
    int a[7] = {1,2,3,4,6,5,7};
    int *ptr_a = a;
    int b[k];
    int *ptr_b = b;
    slice_array(a,b,k);
    for(i=0;i<k;i++) {
            printf("%d\t",b[i]);
    }
    printf("\n");
}

~
Обновление, нарезка массива работает нормально, но я хочу сделать то же самое со структурой. До сих пор я написал следующий код. Я получаю следующую ошибку: присвоение из несовместимого типа указателя [включено по умолчанию] ptr_A = & A;

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

//This function works fine in drivers program
void slice_array(int *input_array, int *sliced_array, int n){
    int i;
    for(i=0; i < n; i++) {
            sliced_array[i] = input_array[i];
    }
};

struct nbrs_ind {
    float value;
    int index;
};

//Need to make the slice of nbrs_ind struct using following function. 
void slice_struct(struct nbrs_ind *input_struct, struct nbrs_ind   *sliced_struct, int n){
    int i;
    for(i=0; i < n; i++) {
            sliced_struct[i].index = input_struct[i].index;
            sliced_struct[i].value = input_struct[i].value;
    }
};

int main () {
    int k=3;
    int i;
    int a[7] = {1,2,3,4,6,5,7};
    float c[7] = {2.3,10,3,5,6.4,7.3,1};
    int *ptr_a = a;
    int b[k];
    int *ptr_b = b;

    struct nbrs_ind A[7]; // Declare 7 struct of nbrs_ind
    //Initilize the delare structs
    for (i=0;i<7;i++){
            A[i].index = i;
            A[i].value = c[i];
    }

    //How do I make a pointer to the struct so I can pass it to slice_struct function 
    // I need to be able to do something like slice_struct(A,B,n);  
    struct nbrs_ind *ptr_A ;
    ptr_A = &A;

    slice_array(a,b,k);
    for(i=0;i<k;i++) {
            printf("%d\t",b[i]);
    }
    printf("\n");
 }

~
~
~

1 Ответ

0 голосов
/ 15 апреля 2019
#include <stdio.h>
#include <stdlib.h>

int slice_array(int *input_array, int *sliced_array, int n){
int i;
for(i=0; i < n; i++) {
        sliced_array[i] = input_array[i];
   }
  return 0;
};

struct nbrs_ind {
float value;
int index;
};

//I also want to write a function which can slice the members of struct nbrs_ind    (i.e. just slice first n indices nbrs_ind)

int main () {
int k=4;
int i;
int a[7] = {1,2,3,4,6,5,7};
int *ptr_a = a;
int b[k];
int *ptr_b = b;
slice_array(a,b,k);
for(i=0;i<k;i++) {
        printf("%d\t",b[i]);
}
printf("\n");

}

...