fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. bool is_zero(void* ptr,size_t elem_size) {
  6. char* p = ptr;
  7. for (int i=0;i<elem_size;i++,p++){
  8. if (*p){
  9. return false;
  10. }
  11. }
  12. return true;
  13. }
  14.  
  15. void* clean_array(void* arr, int n, size_t elem_size) {
  16. void * ptr2=NULL;
  17. size_t j=0;
  18. for(int i=0;i<n;i++){
  19. if(is_zero(arr,elem_size)==0){
  20. j++;
  21. ptr2=realloc(ptr2,j*elem_size);
  22. if(!ptr2)return NULL;
  23. memcpy(ptr2+elem_size*(j-1),arr,elem_size);
  24. }
  25. arr+=elem_size;
  26. }
  27. return ptr2;
  28. }
  29.  
  30.  
  31. int main() {
  32. int arr_int[] = {1,2,0};
  33. int* int_cl = clean_array(arr_int,3,sizeof(int));
  34. printf("%d,%d\n",int_cl[0],int_cl[1]);
  35. free(int_cl);
  36. return 0;
  37. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
1,2