#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool is_zero(void* ptr,size_t elem_size) {
char* p = ptr;
for (int i=0;i<elem_size;i++,p++){
if (*p){
return false;
}
}
return true;
}
void* clean_array(void* arr, int n, size_t elem_size) {
void * ptr2=NULL;
size_t j=0;
for(int i=0;i<n;i++){
if(is_zero(arr,elem_size)==0){
j++;
if(!ptr2)return NULL;
memcpy(ptr2
+elem_size
*(j
-1),arr
,elem_size
); }
arr+=elem_size;
}
return ptr2;
}
int main() {
int arr_int[] = {1,2,0};
int* int_cl = clean_array(arr_int,3,sizeof(int));
printf("%d,%d\n",int_cl
[0],int_cl
[1]); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCmJvb2wgaXNfemVybyh2b2lkKiBwdHIsc2l6ZV90IGVsZW1fc2l6ZSkgewogICAgY2hhciogcCA9IHB0cjsKICAgIGZvciAoaW50IGk9MDtpPGVsZW1fc2l6ZTtpKysscCsrKXsKICAgICAgICBpZiAoKnApewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCnZvaWQqIGNsZWFuX2FycmF5KHZvaWQqIGFyciwgaW50IG4sIHNpemVfdCBlbGVtX3NpemUpIHsKICAgIHZvaWQgKiBwdHIyPU5VTEw7CiAgICBzaXplX3Qgaj0wOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgaWYoaXNfemVybyhhcnIsZWxlbV9zaXplKT09MCl7CiAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgcHRyMj1yZWFsbG9jKHB0cjIsaiplbGVtX3NpemUpOwogICAgICAgICAgICBpZighcHRyMilyZXR1cm4gTlVMTDsKICAgICAgICAgICAgbWVtY3B5KHB0cjIrZWxlbV9zaXplKihqLTEpLGFycixlbGVtX3NpemUpOwogICAgICAgIH0KICAgICAgICBhcnIrPWVsZW1fc2l6ZTsKICAgIH0KICAgIHJldHVybiBwdHIyOwp9CgoKaW50IG1haW4oKSB7CiAgICBpbnQgYXJyX2ludFtdID0gezEsMiwwfTsKICAgIGludCogaW50X2NsID0gY2xlYW5fYXJyYXkoYXJyX2ludCwzLHNpemVvZihpbnQpKTsKICAgIHByaW50ZigiJWQsJWRcbiIsaW50X2NsWzBdLGludF9jbFsxXSk7CiAgICBmcmVlKGludF9jbCk7CglyZXR1cm4gMDsKfQ==