Talk:Find common directory path

From Rosetta Code
Revision as of 11:20, 14 April 2011 by rosettacode>Per (Add suggestion for much simpler version for C language)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Much simpler version for the C language:

<lang C>

  1. define PATH_MAX 127
  2. include <string.h>
  3. include <stdio.h>

static void leastCommonPath(const char *fixed, char *moving) { char *t; unsigned n = strspn(moving, fixed); if (strlen(fixed) > n && strlen(moving) == n && fixed[n] == '/') return; strcpy(moving, fixed); moving[n] = '\0'; t = strrchr(moving, '/'); if (t && t != moving) *t = '\0'; }

int main() { char *dir_list[] = { "/home/user1/tmp/coverage/test", "/home/user1/tmp/covert/operator", "/home/user1/tmp/coven/members", NULL }; int i = 0; char tmp[PATH_MAX]; strcpy(tmp, dir_list[0]); while (dir_list[++i]) { leastCommonPath(dir_list[i], tmp); } printf("%s\n", tmp); return 0; } </lang>