#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *remove_substring(char *s, int p, int n) {
// You need to do some checking before calling malloc
if (n == 0) return s;
if (n < 0 || p < 0 || p+n > len) return NULL;
size_t rlen = len-n+1;
if (res == NULL) return NULL;
char *pt = res;
// Now let's use the two familiar loops,
// except printf("%c"...) will be replaced with *p++ = ...
for (int i = 0; i < p; i++) {
*pt++ = s[i];
}
for (int i
= p
+n
; i
< strlen(s
); i
++) { *pt++ = s[i];
}
*pt = '\0';
return res;
}
int main(void) {
char *s = remove_substring("abcdefghi",4,3);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKY2hhciAqcmVtb3ZlX3N1YnN0cmluZyhjaGFyICpzLCBpbnQgcCwgaW50IG4pIHsKICAgIC8vIFlvdSBuZWVkIHRvIGRvIHNvbWUgY2hlY2tpbmcgYmVmb3JlIGNhbGxpbmcgbWFsbG9jCiAgICBpZiAobiA9PSAwKSByZXR1cm4gczsKICAgIHNpemVfdCBsZW4gPSBzdHJsZW4ocyk7CiAgICBpZiAobiA8IDAgfHwgcCA8IDAgfHwgcCtuID4gbGVuKSByZXR1cm4gTlVMTDsKICAgIHNpemVfdCBybGVuID0gbGVuLW4rMTsKICAgIGNoYXIgKnJlcyA9IG1hbGxvYyhybGVuKTsKICAgIGlmIChyZXMgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAgICBjaGFyICpwdCA9IHJlczsKICAgIC8vIE5vdyBsZXQncyB1c2UgdGhlIHR3byBmYW1pbGlhciBsb29wcywKICAgIC8vIGV4Y2VwdCBwcmludGYoIiVjIi4uLikgd2lsbCBiZSByZXBsYWNlZCB3aXRoICpwKysgPSAuLi4KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcDsgaSsrKSB7CiAgICAgICAgKnB0KysgPSBzW2ldOwogICAgfQogICAgZm9yIChpbnQgaSA9IHArbjsgaSA8IHN0cmxlbihzKTsgaSsrKSB7CiAgICAgICAgKnB0KysgPSBzW2ldOwogICAgfQogICAgKnB0ID0gJ1wwJzsKICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIGNoYXIgKnMgPSByZW1vdmVfc3Vic3RyaW5nKCJhYmNkZWZnaGkiLDQsMyk7CiAgICBwcmludGYoIiVzXG4iLCBzKTsKICAgIGZyZWUocyk7CglyZXR1cm4gMDsKfQo=