Skip to content

int rewrite_dir(char *dir)好像有一个问题 #3

@jc1144096387

Description

@jc1144096387

int rewrite_dir(char *dir) {
int len = strlen(dir);
if (dir[len-1] == '/') --len;
int pre = -1;
for (int i = 0; i < len; ++i) if (dir[len] == '/') {
if (pre != -1) {
if (pre + 1 == i) {
printf("rewrite_dir: %s is invaild, please check!\n", dir);
return 0;
}
}
pre = i;
}
char newdir[len];
if (dir[0] == '/') {
strcpy(newdir, "~");
}
else {
strcpy(newdir, openfilelist[curdirid].dir);
}
strcat(newdir, dir);
strcpy(dir, newdir);
return 1;
}

其中
for (int i = 0; i < len; ++i) if (dir[len] == '/') {
if (pre != -1) {
if (pre + 1 == i) {
printf("rewrite_dir: %s is invaild, please check!\n", dir);
return 0;
}
}
pre = i;
}
这一部分代码中的 if (dir[len] == '/')应该为 if (dir[i] == '/'),用于判断是否有两个连续'/'。不知道我的理解是否正确。如果是if (dir[len] == '/')我看不懂这段代码的作用,请指教。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions