HDU_OS_Assignment_2017_SimpleFileSystem
HDU_OS_Assignment_2017_SimpleFileSystem copied to clipboard
int rewrite_dir(char *dir)好像有一个问题
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] == '/')我看不懂这段代码的作用,请指教。