Home > front end >  How to use `malloc/calloc` inside a function? [closed]
How to use `malloc/calloc` inside a function? [closed]

Time:10-07

I want to create a function fill_table to fill a table dynamically. The tail n of the table is declared in the main() function,

int n = 0;
float* *T;
void show_table(int n) {}
void fill_table(int n) {}

int main() {
    printf(" Table dimension: ");
    scanf("%d", &n);
    fill_table(n);
    show_table(n);
  return 0;
}
  • I always get this error:
segmentation fault ./a.out
  • I try mes functions like that:
int n = 0;
float* *T=0;

void show_table(int n){
    printf("Show Table: \n");
    for (int i = 0; i < n; i  ) {
      printf("%f ", *(T   i));
    }
}

void fill_table(int n) {
   *T=(float*)calloc(n, sizeof(float));;
  if (!T){
    printf("Memoire not allowe\n");
    exit(0);
  } else {
    for (int i = 0; i < n; i  ) {
      printf("\nT[%d]= ", i 1);
      scanf("%f", (T   i));
    }
  }
}

CodePudding user response:

After a lot of trial and error I found this solution:

  • must declare table as

    float* T; //not float* *T;
    
  • function fill_table:

    void fill_table(int n) {
       T=(float*)calloc(n, sizeof(float));;
      if (!T){
        printf("Memoire not allowe\n");
        exit(0);
      } else {
        for (int i = 0; i < n; i  ) {
          printf("\nT[%d]= ", i 1);
          scanf("%f", (T   i));
        }
      }
    }
    
  • function show_table:

    void show_table(int n){
        printf("Show Table: \n");
        for (int i = 0; i < n; i  ) {
          printf("%f ", *(T   i));
        }
    }
    
  • Related