#include <stdio.h>
#include <string.h>
static void find_destructive(char *s) {
if (p_sl) {
*p_sl = '\0';
printf("[%s] [%s]\n", s
, p_sl
+ 1); } else {
printf("Cannot find any slashes.\n"); }
}
static void find_transparent(const char *s) {
const char *p_sl
= strrchr(s
, '/'); if (p_sl) {
char *first
= (char *)malloc(p_sl
- s
+ 1); if ( ! first) {
perror("malloc for a temp buffer: "); return;
}
first[p_sl - s] = '\0';
printf("[%s] [%s]\n", first
, p_sl
+ 1); } else {
printf("Cannot find any slashes.\n"); }
}
int main() {
char s[] = "home/usr/wow/muchprogram";
find_transparent(s);
find_destructive(s);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnN0YXRpYyB2b2lkIGZpbmRfZGVzdHJ1Y3RpdmUoY2hhciAqcykgewogICAgY2hhciAqcF9zbCA9IHN0cnJjaHIocywgJy8nKTsKICAgIGlmIChwX3NsKSB7CiAgICAgICAgKnBfc2wgPSAnXDAnOwogICAgICAgIHByaW50ZigiWyVzXSBbJXNdXG4iLCBzLCBwX3NsICsgMSk7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50ZigiQ2Fubm90IGZpbmQgYW55IHNsYXNoZXMuXG4iKTsKICAgIH0KfQoKc3RhdGljIHZvaWQgZmluZF90cmFuc3BhcmVudChjb25zdCBjaGFyICpzKSB7CiAgICBjb25zdCBjaGFyICpwX3NsID0gc3RycmNocihzLCAnLycpOwogICAgaWYgKHBfc2wpIHsKICAgIAljaGFyICpmaXJzdCA9IChjaGFyICopbWFsbG9jKHBfc2wgLSBzICsgMSk7CiAgICAJaWYgKCAhIGZpcnN0KSB7CiAgICAJICAgIHBlcnJvcigibWFsbG9jIGZvciBhIHRlbXAgYnVmZmVyOiAiKTsKICAgIAkgICAgcmV0dXJuOwogICAgCX0KICAgIAltZW1jcHkoZmlyc3QsIHMsIHBfc2wgLSBzKTsKICAgIAlmaXJzdFtwX3NsIC0gc10gPSAnXDAnOwogICAgICAgIHByaW50ZigiWyVzXSBbJXNdXG4iLCBmaXJzdCwgcF9zbCArIDEpOwogICAgICAgIGZyZWUoZmlyc3QpOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludGYoIkNhbm5vdCBmaW5kIGFueSBzbGFzaGVzLlxuIik7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgY2hhciBzW10gPSAiaG9tZS91c3Ivd293L211Y2hwcm9ncmFtIjsKCiAgICBmaW5kX3RyYW5zcGFyZW50KHMpOwogICAgZmluZF9kZXN0cnVjdGl2ZShzKTsKCiAgICByZXR1cm4gMDsKfQ==