У меня есть массив строк в C. Эти строки хранят пути файловых систем, которые должны быть размонтированы.
For example...
mountlist[0] = "/proc"
mountlist[1] = "/dev"
mountlist[2] = "/dev/shm"
and so on...
Мне нужно размонтировать вложенные файловые системы перед файловыми системами, над которыми они смонтированы (поэтому /dev/shm
необходимо размонтировать перед /dev
). Я думал, что самый простой способ сделать это - отсортировать строки по длине, сначала по длине. У меня есть количество строк в массиве, хранящихся в целом числе i
.
С кодом, который я смог придумать до сих пор, учитывая, что strnum
является целым числом строки, к которой мне нужно получить доступ, строки доступны с mountlist[strnum]
и соответствующая длина сохраняется в length[strnum]
.
В заключение, как я могу отсортировать строки в массиве по наибольшей длине? Мне не нужно на самом деле сортировать строки, мне просто нужно получить доступ к ним в правильном порядке. Я не могу понять, как это написать, но я думал о коде, который создает массив int с номером каждого массива строк в правильном порядке (пример выше будет {2, 0, 1}), так что если этот массив был назван sort
, тогда mountlist[sort[0]]
будет самой длинной строкой. С таким массивом соответствующий цикл for
будет:
for (int q = 0; q < i; q++) {
umount(mountlist[sort[q]]);
}